From credo
Migrates an existing repo into the .credo/ structure safely, converting scattered process docs and open work into conformant credo items. Use when onboarding a legacy project into credo.
How this skill is triggered — by the user, by Claude, or both
Slash command
/credo:migrateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A generic, reusable procedure to migrate ANY existing repo into the credo target form. It
.credo/A generic, reusable procedure to migrate ANY existing repo into the credo target form. It
tells you HOW to reach that end state safely. Everywhere below, <repo> is the target
repo and "the user" is its owner. This skill contains no personal, project-specific, or
absolute-path data.
The binding target form is defined INSIDE this plugin, not by any external design
document. At the end of a migration, everything under .credo/ must match:
"${CLAUDE_PLUGIN_ROOT}/scripts/credo-init.sh" -
folder layout and the files it creates (see step 1). That tree is the layout authority.items skill - the work-item model: folder = status, the lean frontmatter, the
body sections, the Definition of Done, and id issuance.safety skill - the highest-priority filesystem-protection and
no-autonomous-installs rules; they bind this whole procedure.requirements-verbatim skill - the append-only, never-censored requirements log
and the strict separation of user-verbatim text from any assistant proposal.verify skill - what a real (visual, per-viewport) verification is, which
governs whether a criterion counts as exercised.budget skill - budget caps and the commit-identity gate, when a migration run
is autonomous and commits anything.Reference these by name. If any instruction points you at an external "structure design" document, ignore it - the plugin-internal authority above is the target form.
.credo/ matches the target form above: folder layout, file names, frontmatter, and the
items model. It is NOT a verbatim copy of the old files under new folders..credo/. The originals stay exactly where they are until the final step (8), so you may
restructure aggressively inside .credo/.requirements-verbatim rule). File names, placement, frontmatter, and splitting sources
into items ARE adapted.The safety skill applies in full and overrides any task instruction. In addition, these
migration-specific safety rules hold at every step:
rm, find -delete,
shred). The only removal is a MOVE to .deleted/ in the final step, with the path
mirrored (step 8).-L. Never follow a symlink that points OUT of the repo
(it can pull external content in, or write into another repo). Handle such files
separately, with the user..env*, keys, credentials, ssh, or smb credentials.rm can delete the
file you just wrote. For a case-only rename, use a two-step move via a temp name; never
rm the case-twin of a just-written file. The credo-item-move.sh helper already
contains this two-step case-only-rename guard - prefer it for any item move.budget skill
apply to any autonomous run that commits.This is a long, multi-phase operation: delegate the heavy work (inventory, classification,
item cutting, and the self-audit) to subagents per the orchestration skill, and keep the
safety skill in force inside every subagent.
"${CLAUDE_PLUGIN_ROOT}/scripts/credo-init.sh". It is
idempotent and creates the .credo/ namespace: docs/, screenshots/,
items/{1_todo/{1_clarify,2_go},2_done,3_verified,4_archived,parked/{hold,future}},
process/{requirements,handoffs/archive,reports}, checklists/, an empty id-counter,
and a per-project config stub. Do not hand-create this tree - let the script own the
layout so it stays the authority.credo-init.sh excludes ALL of .credo/** via
.git/info/exclude; persistence is disk and backups, not commits. If the user opts in
to versioning .credo/ in this repo, re-run with CREDO_VERSION_TRACKED=1, which
excludes ONLY .credo/config and .credo/screenshots/ and versions the rest. config
and screenshots are ALWAYS excluded so personal values and binaries never get
committed.id-counter = the highest existing legacy id in the repo, so new ids never collide
and old numbers are never reused. If there are no legacy ids, leave it empty (treated as 0).
Issue every new id afterwards with "${CLAUDE_PLUGIN_ROOT}/scripts/credo-id-next.sh",
never by scanning folders or taking max+1 yourself.Keep a separate, non-versioned working folder (for example .migration/, git-excluded)
for the migration run itself: the plan, a progress / handoff note, the item-candidate
list, and any feedback on this procedure. Keep it distinct from .credo/ (the target).
requirements / verbatim, handoff / session, progress / status, diag,
audit, verification / verify, deeptest / test-run / final, gap, testplan,
plan / buildplan, and stable convention docs (authority-order, persistence,
working-method). If a file matches no fragment or several, do not guess: ask (user
present) or report (autonomous)..credo/. .credo/ holds prose and data only. Scripts
(livetests, helpers, admin tools) belong in the repo tree (scripts/, tests/); code
found under docs/ is misplaced. Relocating it is a final-step MOVE (8), not a copy.reports/; the executing script goes to repo tooling, never .credo/. A leading _
(or similar) on a script name often signals a throwaway / live script rather than a real
test.process/requirements/: the verbatim, append-only requirements log (the
requirements-verbatim skill governs its form).process/handoffs/: a rolling HANDOFF.md (the always-current "read me first" anchor)
and archive/ for older dated states. Historical progress / session logs also go to
archive/. There is NO process/progress/ folder; ongoing progress lives as items in
2_done/.process/reports/: diag / audit / verification / plan / design-record, each with a
kind: frontmatter field; file names lowercase-kebab, keep the date.docs/: stable "how we work here" conventions only (not feature content)..credo/ content is written in the project's working language; the
delivered credo plugin files themselves are English. Item body section names follow the
items model and are written in the project working language.These two interleave; run them together.
docs/ file is either (a) content (stays at its content
location), (b) a process report (copy to reports/), or (c) open work (becomes an item).
A single doc can be partly done (report) AND partly open (item); split it.items/ nor to .credo/docs/.reports/ and READ
it to derive items; it is not consumed or deleted.process/requirements/.items model. One id = one item. Keep existing legacy numbers as
the item id; new items draw the next id from credo-id-next.sh. Frontmatter:
id, title, created, type, ui (no status / marker field - the folder is the status).
Body sections, exactly as in the items model: Requirement (verbatim),
Success Criteria (= DoD), Implemented, Verify (4-valued per layer: not-started /
present / wired-but-behavior-unverified / exercised - failed is a defect outcome, not
one of the four states), History. These are the canonical English names; a project writes them in
its own working language (for example a German project localizes the headings), but the
model and order stay the same.1_todo/2_go. Anything with an open
question goes to 1_todo/1_clarify (or split: keep the fully-clarified core in 2_go
and file a separate clarify item for the open part).failed / "not started",
wiring-check the real code (search endpoint / class / function / tests). A feature may
already be built under a DIFFERENT task id. If built but behavior unobserved, use
wired-but-behavior-unverified, not failed. This mirrors the items skill.1_todo/1_clarify (clarify when
they come up). Deliberately deferred -> parked/future. parked/hold ONLY for a genuine
external blocker (rare)."${CLAUDE_PLUGIN_ROOT}/scripts/credo-item-move.sh" <id> <target> for status moves - it is atomic, never deletes, refuses the user-only
3_verified target, and carries the case-only-rename guard (step 1 safety). Update the
item History after each move..credo/, update internal
references (ids, links, paths) so nothing breaks. The docs/ originals are untouched, so
references pointing at them stay valid.Run a read-only audit against the target form (the scaffolded tree and the items
model). Prefer delegating this to a fresh reviewer subagent (the audit skill), not the
agent that did the migration - a fresh reviewer catches self-inconsistencies. Check:
credo-init.sh tree;<id>-slug.md for items);status / marker field;id-counter == the highest id in use;Fix all findings before step 8.
This step is ALWAYS user-gated. Do it only after all earlier steps (scaffold, classify, items, self-audit) are complete and accepted, and never autonomously.
.credo/, grep the WHOLE repo for its file
name AND path-stem (without extension), across code, docs, conventions, and .credo/,
INCLUDING git-ignored areas (rg --no-ignore) so code references without a .md
extension are not missed..deleted/** with the original path mirrored exactly, and
append a line to the repo's dogma TO-DELETE list. Never hard-delete; final deletion is
the user's manual decision later.scripts/ (same reference-check first)..deleted/ mirror is the primary reversible record; append the log
entry only with the user's explicit OK.notes/,
planning/) in step 6.npx claudepluginhub marcel-bich/marcel-bich-claude-marketplace --plugin credoUpgrades existing DIA repositories between versions by running migration scripts: rename IDs, flatten analysis, regenerate BACKLOG.md. Idempotent.
Adopts govctl governance in existing projects by discovering undocumented decisions, backfilling ADRs and RFCs, and annotating source code.
Automates the entire pre-development workflow for large-scale project transformations: analysis, planning, documentation, progress tracking, and execution within a single session.