name: repo-prep description: 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".
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
defaultsbut 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:
ToolSearchformcp__cenno__ask_sequence. If the tools resolve, use cenno; otherwise fall back toAskUserQuestion(choices) / plain conversational prompts (free text). - When using cenno:
- Multi-question flows (the authorship wizard, scope selection) →
mcp__cenno__ask_sequencewithflow: "question"; it auto-fills progress dots. - Single questions →
mcp__cenno__ask_user. - Use
input.kind: "choice"+choicesfor 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.
- Multi-question flows (the authorship wizard, scope selection) →
- If cenno is wanted but not installed, mention it can be set up via the
cennoskill; 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.tomlthere 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 profiledefaults. - Resolve placeholders — once, per
references/checklist.md. - Generate — for each chosen component, create files from
assets/templates/andassets/github/, filling placeholders. Usescripts/fetch_license.pyfor 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.mdand 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.