Repo Prep
Interactively scaffold the legal, metadata, community, and compliance files a
repository needs before publication — consistently, from a central author
profile, with author choices respected per repo.
When to use
- Preparing a new or existing repo for GitHub / open-sourcing.
- Adding missing LICENSE, NOTICE, AUTHORSHIP, README sections, or package metadata.
- Writing a defensible AUTHORSHIP record for AI-assisted work (the wizard).
- Adding community docs or
.github/ templates.
- Checking EU/Germany compliance obligations for a repo.
Operating principles
- Interactive, not assumed. Ask the user for choices (see Asking questions
below); respect the author profile's
defaults but confirm per repo. Don't
blindly dump templates.
- Idempotent. Detect what already exists; skip or refresh, never clobber
silently. Show a plan before writing.
- Evidence over assertion (especially authorship): mine the repo for facts.
- Confirm outward-facing actions (anything via
gh, pushes) before running.
- Follow the user's git conventions — commit only when asked.
Asking questions (interview transport)
Prefer cenno when it is installed — it gives a nicer panel, progress dots,
and voice input (great for the reflective authorship answers).
- Detect cenno once per run:
ToolSearch for
mcp__cenno__ask_sequence. If the tools resolve, use cenno; otherwise fall
back to AskUserQuestion (choices) / plain conversational prompts (free text).
- When using cenno:
- Multi-question flows (the authorship wizard, scope selection) →
mcp__cenno__ask_sequence with flow: "question"; it auto-fills progress dots.
- Single questions →
mcp__cenno__ask_user.
- Use
input.kind: "choice" + choices for pick-one; "confirm" for yes/no;
"voice_text" for reflective free-text (Decisions, Judgment, Direction, Art
Direction); "scale" for ratings.
- Parse the returned JSON (
{answers: [...]} / {answer, ...}). Handle
{answered: false} (timeout) by retrying or falling back.
- If cenno is wanted but not installed, mention it can be set up via the
cenno skill; do not block — fall back gracefully.
Central author profile (single source of truth)
Identity, promo links ("ads"), and defaults live in
~/.config/personal-os/repo-prep/profile.toml (override with REPO_PREP_PROFILE).
- On first run, if it doesn't exist, copy
assets/templates/profile.example.toml
there and walk the user through filling it (name, email, github, url, promo
projects, defaults). It is pre-seeded for this author.
- Read it at the start of every run to resolve
{{author}}, {{email}},
{{github}}, the promo block, and default choices.
Workflow
- Detect — inspect the repo: manifest/ecosystem (
pyproject.toml,
package.json, Cargo.toml, go.mod), existing files, git remote, default
branch, whether it's already on GitHub. Read the author profile.
- Scope — confirm which components to do via
AskUserQuestion (core /
community / .github / promo / compliance / gh remote). Pre-fill from profile
defaults.
- Resolve placeholders — once, per
references/checklist.md.
- Generate — for each chosen component, create files from
assets/templates/ and assets/github/, filling placeholders. Use
scripts/fetch_license.py for LICENSE. Edit package metadata inline.
- Authorship — if doing AUTHORSHIP.md, run the wizard (below), don't just
fill the template.
- Compliance — if requested or the author is EU-based, run the gating
questions in
references/eu-germany-compliance.md and add only what applies.
- gh remote (optional) — confirm, then create/configure the repo.
- Verify — run the test suite (metadata edits can break builds); show the
diff; commit only if asked.
Full item-by-item detail, placeholder table, and ecosystem detection:
references/checklist.md (read it before generating).
The authorship wizard
A first-class feature. To produce a defensible AUTHORSHIP.md for AI-assisted
work, read and follow references/authorship-wizard.md. It:
- gathers external evidence first (ADRs, git log, changelog, AI session logs,
CLAUDE.md/AGENTS.md, design tokens) and offers a draft to edit;
- asks the jurisdiction first, then interviews across five sections —
Decisions, Exercise of Judgment, Goal Setting & Direction, Art Direction,
AI Implementation;
- writes a Legal & Copyright section with jurisdiction-aware framing
(US human-authorship bar, EU/Germany "own intellectual creation", UK CGW);
- always states it is not legal advice.
Output template: assets/templates/AUTHORSHIP.md.
EU / Germany compliance
references/eu-germany-compliance.md covers CRA (SBOM, vuln reporting), AI Act
Art. 50 transparency, German Impressum (DDG), GDPR, the Product Liability
Directive, and the EAA. Obligations are conditional — ask the gating
questions and add only what applies. Not legal advice.
Resources
assets/licenses/ — bundled MIT, BSD-3-Clause (offline); others fetched.
assets/templates/ — AUTHORSHIP, CODE_OF_CONDUCT, CONTRIBUTING, SECURITY,
NOTICE, CHANGELOG, profile.example.toml.
assets/github/ — PR + issue templates, dependabot, CI workflows (python/node).
scripts/fetch_license.py — write a filled LICENSE for any SPDX id.
references/ — checklist.md, licenses.md, authorship-wizard.md,
eu-germany-compliance.md.
1---2name: repo-prep3description: Interactively prepare a code repository for publication — LICENSE, NOTICE, AUTHORSHIP, README sections, package metadata, .gitignore, community docs (CONTRIBUTING/CODE_OF_CONDUCT/SECURITY/CHANGELOG), .github templates (issues/PR/CI/dependabot), a promo "more from the author" block, and conditional EU/Germany legal compliance (CRA, AI Act, GDPR, Impressum, product liability). Includes a dedicated authorship wizard that documents human decisions, judgment, direction, and art direction with jurisdiction-aware legal framing. Use when setting up a new repo for release, adding missing legal/meta/community files, writing an AUTHORSHIP record for AI-assisted work, or asking "prepare this repo for GitHub / open-sourcing".4---5
6# Repo Prep
7
8Interactively scaffold the legal, metadata, community, and compliance files a
9repository needs before publication — consistently, from a central author
10profile, with author choices respected per repo.
11
12## When to use
13
14- Preparing a new or existing repo for GitHub / open-sourcing.
15- Adding missing LICENSE, NOTICE, AUTHORSHIP, README sections, or package metadata.
16- Writing a defensible **AUTHORSHIP** record for AI-assisted work (the wizard).
17- Adding community docs or `.github/` templates.
18- Checking **EU/Germany compliance** obligations for a repo.
19
20## Operating principles
21
22- **Interactive, not assumed.** Ask the user for choices (see *Asking questions*
23 below); respect the author profile's `defaults` but confirm per repo. Don't
24 blindly dump templates.
25- **Idempotent.** Detect what already exists; skip or refresh, never clobber
26 silently. Show a plan before writing.
27- **Evidence over assertion** (especially authorship): mine the repo for facts.
28- **Confirm outward-facing actions** (anything via `gh`, pushes) before running.
29- Follow the user's git conventions — commit only when asked.
30
31## Asking questions (interview transport)
32
33Prefer **cenno** when it is installed — it gives a nicer panel, progress dots,
34and voice input (great for the reflective authorship answers).
35
361. **Detect cenno once per run:** `ToolSearch` for
37 `mcp__cenno__ask_sequence`. If the tools resolve, use cenno; otherwise fall
38 back to `AskUserQuestion` (choices) / plain conversational prompts (free text).
392. **When using cenno:**
40 - Multi-question flows (the authorship wizard, scope selection) →
41 `mcp__cenno__ask_sequence` with `flow: "question"`; it auto-fills progress dots.
42 - Single questions → `mcp__cenno__ask_user`.
43 - Use `input.kind: "choice"` + `choices` for pick-one; `"confirm"` for yes/no;
44 `"voice_text"` for reflective free-text (Decisions, Judgment, Direction, Art
45 Direction); `"scale"` for ratings.
46 - Parse the returned JSON (`{answers: [...]}` / `{answer, ...}`). Handle
47 `{answered: false}` (timeout) by retrying or falling back.
483. **If cenno is wanted but not installed**, mention it can be set up via the
49 `cenno` skill; do not block — fall back gracefully.
50
51## Central author profile (single source of truth)
52
53Identity, promo links ("ads"), and defaults live in
54`~/.config/personal-os/repo-prep/profile.toml` (override with `REPO_PREP_PROFILE`).
55
561. On first run, if it doesn't exist, copy `assets/templates/profile.example.toml`
57 there and walk the user through filling it (name, email, github, url, promo
58 projects, defaults). It is pre-seeded for this author.
592. Read it at the start of every run to resolve `{{author}}`, `{{email}}`,
60 `{{github}}`, the promo block, and default choices.
61
62## Workflow
63
641. **Detect** — inspect the repo: manifest/ecosystem (`pyproject.toml`,
65 `package.json`, `Cargo.toml`, `go.mod`), existing files, `git remote`, default
66 branch, whether it's already on GitHub. Read the author profile.
672. **Scope** — confirm which components to do via `AskUserQuestion` (core /
68 community / .github / promo / compliance / gh remote). Pre-fill from profile
69 `defaults`.
703. **Resolve placeholders** — once, per `references/checklist.md`.
714. **Generate** — for each chosen component, create files from
72 `assets/templates/` and `assets/github/`, filling placeholders. Use
73 `scripts/fetch_license.py` for LICENSE. Edit package metadata inline.
745. **Authorship** — if doing AUTHORSHIP.md, run the wizard (below), don't just
75 fill the template.
766. **Compliance** — if requested or the author is EU-based, run the gating
77 questions in `references/eu-germany-compliance.md` and add only what applies.
787. **gh remote** (optional) — confirm, then create/configure the repo.
798. **Verify** — run the test suite (metadata edits can break builds); show the
80 diff; commit only if asked.
81
82Full item-by-item detail, placeholder table, and ecosystem detection:
83**`references/checklist.md`** (read it before generating).
84
85## The authorship wizard
86
87A first-class feature. To produce a defensible `AUTHORSHIP.md` for AI-assisted
88work, **read and follow `references/authorship-wizard.md`**. It:
89
90- gathers external evidence first (ADRs, git log, changelog, AI session logs,
91 `CLAUDE.md`/`AGENTS.md`, design tokens) and offers a draft to edit;
92- asks the **jurisdiction** first, then interviews across five sections —
93 **Decisions, Exercise of Judgment, Goal Setting & Direction, Art Direction,
94 AI Implementation**;
95- writes a **Legal & Copyright** section with jurisdiction-aware framing
96 (US human-authorship bar, EU/Germany "own intellectual creation", UK CGW);
97- always states it is **not legal advice**.
98
99Output template: `assets/templates/AUTHORSHIP.md`.
100
101## EU / Germany compliance
102
103`references/eu-germany-compliance.md` covers CRA (SBOM, vuln reporting), AI Act
104Art. 50 transparency, German Impressum (DDG), GDPR, the Product Liability
105Directive, and the EAA. Obligations are **conditional** — ask the gating
106questions and add only what applies. Not legal advice.
107
108## Resources
109
110- `assets/licenses/` — bundled MIT, BSD-3-Clause (offline); others fetched.
111- `assets/templates/` — AUTHORSHIP, CODE_OF_CONDUCT, CONTRIBUTING, SECURITY,
112 NOTICE, CHANGELOG, profile.example.toml.
113- `assets/github/` — PR + issue templates, dependabot, CI workflows (python/node).
114- `scripts/fetch_license.py` — write a filled LICENSE for any SPDX id.
115- `references/` — `checklist.md`, `licenses.md`, `authorship-wizard.md`,
116 `eu-germany-compliance.md`.