New repo
Use when you want to scaffold, create, or start a new repository to the RepoKit standard — "/new-repo", "scaffold a new repo", "set up a new module / plugin / project repo". Stamps a type x tier-compliant repo from bundled templates, then stops at local review.From its SKILL.md
npx -y skills add PBNZ/repo-kit --skill new-repoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `pwsh scripts/check-docs.ps1 -Update` and 7 more.
SKILL.md
7.9 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it
new-repo — scaffold a RepoKit-standard repository
You scaffold a new repository by copying bundled templates and filling in their {{placeholders}}
(copy-and-fill — there is no separate templating engine). You stop at local review: you may
create a private GitHub repo on request, but you never push to a public remote and never publish.
Your templates live under this skill's own directory. At load you were given a line
Base directory for this skill: <ABS>. Read every template as <ABS>/templates/<...>. Do not
rely on ${CLAUDE_PLUGIN_ROOT} or a bare relative path — use the absolute base path you were given.
Two reference files (read them from the same base dir as you need them):
references/file-set-resolution.md— exactly which templates apply for a given type × tier.references/placeholders.md— the placeholder list and the post-scaffold self-check.
Inputs
Gather these from the user's arguments / message, else ask — keep it to load-bearing questions:
- name — the repo / directory name (kebab-case).
- description — one line.
- type — one of:
powershell-module,docker-compose,power-platform-connectors,skill-plugin,collection,mcp-server,app-ts,app-python,script-collection. - visibility —
private(= Core tier),public(= +Public), orpublished(= +Published). - author — default
Peter Braun(PBNZ). - license — default
Apache-2.0. - living-docs add-on — yes/no, default no. Ask: "Will this repo's docs track live
operational state (deployed resources, scheduled jobs, long-running migrations)?" If yes, the
add-on stamps
docs/RUNBOOK.md,docs/STATE.json,scripts/check-docs.ps1, and adocs.ymlcheck workflow (seereferences/living-docs-rules.md). - For
powershell-moduleonly: ModuleName (PascalCase, e.g.MyModule).
If the chosen type is a stub (anything other than powershell-module, docker-compose, or power-platform-connectors), tell the user so: the
Core/Public/Published files get stamped, but there's no type-specific structure yet. Confirm they
want to continue.
Steps
-
Resolve the file set (see
references/file-set-resolution.md).active_tiers = [core] + ([public] if visibility in {public, published}) + ([published] if visibility == published). The file set is the union, over each active tiert, of everything undertemplates/<t>/and everything undertemplates/types/<type>/<t>/— plus, for each chosen add-on, everything undertemplates/addons/<addon>/<t>/(add-ons only add files; they never collide). On a path collision pick one winner: higher tier wins (published>public>core), then within a tier the type overlay wins. Produce an explicit list of(template path → target path)pairs: drop any trailing.tmpl, and substitute filename placeholders (e.g.{{ModuleName}}.psd1.tmpl→MyModule.psd1). -
Stamp each file. For each pair: read the template from
<base>/templates/…, replace every placeholder (seereferences/placeholders.md), and write it to the target path under the new repo directory. Files with no.tmplsuffix are copied verbatim. Create directories as needed (docs/adr/,.github/…, any type-specific dirs). -
Write
docs/adr/0001-initial-decisions.mdfrom thedocs/adr/0000-template.mdyou just stamped, recording the name, type, visibility/tier, licence, author, and any notable interview choices. -
Generate the START-HERE map. From the resolved file set, build a short "where things live" table (rules →
AGENTS.md; decisions →docs/adr/; resume state →docs/CHECKPOINT.md(ordocs/STATE.jsonwhen the living-docs add-on takes over); conventions & checklists → therepo-standardskill; CI →.github/workflows/; tests → the type's test dir) and substitute it into the{{START_HERE_MAP}}placeholder in the stampedAGENTS.md. The resume-state row is mandatory —scripts/repokit-check.ps1fails without it. Add a one-line pointer in the README.Resolve
{{LIVING_DOCS_RULES}}in the stampedAGENTS.md: with the living-docs add-on on, substitute the verbatim rules block fromreferences/living-docs-rules.mdand append that file's## Statussnippet to the stampedREADME.md; with the add-on off, delete the placeholder line entirely. When the add-on is on, finish by runningpwsh scripts/check-docs.ps1 -Updatethenpwsh scripts/check-docs.ps1inside the new repo (both must succeed); if pwsh 7 is missing on this host, say so in the summary — running it is the user's first task.Self-check (gate — both must pass before you continue). See
references/placeholders.md: (a) no enumerated placeholder tokens remain anywhere in the output; (b) every expected target file exists and no.tmplsuffix survived. If either fails, fix and re-check. Then, when pwsh 7 is available, runpwsh scripts/repokit-check.ps1inside the new repo — the stamped compliance self-check must pass (it verifies the shim, the START-HERE paths, and the changelog / ADR / resume-state artifacts); if pwsh is missing, say so in the summary. -
Initialise git in the new repo directory:
- Default branch
main, nevermaster:git init -b main(-bneeds git >= 2.28; if it errors, rungit initthengit branch -m main). - Commit identity -- anonymous by default. So a repo that later goes public never leaks a
personal email, set a repo-local (not
--global) identity using the GitHub noreply address. Resolve it for the gh-authenticated user and apply it locally:
Use a real name/email only if the user explicitly asked (you may ask, but the default is the noreply address). Nogh api user --jq '"\(.name // .login)\t\(.id)+\(.login)@users.noreply.github.com"' git config user.name "<name-or-login>" git config user.email "<id>+<login>@users.noreply.github.com"ghavailable? Fall back to<login>@users.noreply.github.com, or ask. - Stage + commit:
git add -A -f-- the-fforce-adds the stamped files past any global gitignore (e.g. a*private*rule that would silently drop aPrivate/dir; safe here, the tree holds only what you stamped, and the repo's own.gitignoregoverns later additions) -- then one Conventional commit:chore: scaffold <name> via RepoKit. - Confirm:
git status --shortis clean,git rev-parse --abbrev-ref HEADprintsmain, and note the commit identity you used in the final summary.
- Default branch
-
Offer a private remote — opt-in only. Ask whether to create a private GitHub repo. Only if the user says yes:
gh repo create <name> --private --source . --remote origin. Never public, never push to a public remote, never publish. When a remote is created, also offer the RepoKit label bootstrap (the workflow-verdict set plus any namespaces the user wants) — the commands are in therepo-standardskill'sstandard/labels.md; skip it for repos that won't run an issue board. -
Print the summary: the resolved tier × type, the file tree, the START-HERE map, and next steps — "review locally; you publish when ready."
Boundaries
- Stop at local review. Do not push to a public remote and do not publish.
- Do not invent files outside the resolved set.
- Diagrams embedded in templates are static — substitute
{{name}}inside them, but never redraw or regenerate a diagram.
What ships with it: 47 files
71.0 KB alongside SKILL.md, 3 of them executable
references/
- file-set-resolution.md4.0 KB
- living-docs-rules.md1.8 KB
- placeholders.md2.6 KB
templates/
- addons/living-docs/core/docs/RUNBOOK.md.tmpl1.1 KB
- addons/living-docs/core/docs/STATE.json.tmpl320 B
- addons/living-docs/core/scripts/check-docs.ps1runs8.4 KB
- core/AGENTS.md.tmpl1.1 KB
- core/CHANGELOG.md.tmpl305 B
- core/CLAUDE.md24 B
- core/CONTRIBUTING.md.tmpl688 B
- core/docs/adr/0000-template.md373 B
- core/docs/CHECKPOINT.md.tmpl571 B
- core/.editorconfig228 B
- core/.gitattributes188 B
- core/.gitignore154 B
- core/README.md.tmpl576 B
- core/scripts/repokit-check.ps1runs5.2 KB
- public/CODE_OF_CONDUCT.md1.7 KB
- public/CONTRIBUTING.md.tmpl1.1 KB
- public/LICENSE11.1 KB
- public/SECURITY.md.tmpl880 B
- published/release-please-config.json.tmpl173 B
- published/.release-please-manifest.json.tmpl19 B
- types/app-python/README.md434 B
- types/app-ts/README.md430 B
- types/collection/README.md434 B
- types/docker-compose/core/compose.yaml.tmpl1.0 KB
- types/docker-compose/core/.dockerignore61 B
- types/docker-compose/core/.env.example164 B
- types/docker-compose/core/README.md.tmpl1.2 KB
- types/mcp-server/README.md434 B
- types/power-platform-connectors/core/connectors.config.json206 B
- types/power-platform-connectors/core/connectors/.gitkeep0 B
- types/power-platform-connectors/core/Dockerfile803 B
- types/power-platform-connectors/core/.postman/manifest.json38 B
- types/power-platform-connectors/core/README.md.tmpl3.2 KB
- types/power-platform-connectors/core/scripts/generate.mjsruns16.4 KB
- types/power-platform-connectors/core/source/.gitkeep0 B
- types/powershell-module/core/{{ModuleName}}.psd1.tmpl909 B
- types/powershell-module/core/{{ModuleName}}.psm1.tmpl486 B
7 more files not listed here. See all 47 in the repository.