cli-cycle — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cli-cycle (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Optimization: This skill uses on-demand loading. Heavy content lives in references/ and is loaded only when needed.Language rule: Skill instructions are written in English. When generating user-facing output (reports, files, documentation), detect the project's primary language (from README, comments, docs, commit messages) and produce the output in that language. If the project is bilingual, ask the user which language to use before proceeding.
"The phoenix does not die — it burns what is impure and is reborn stronger. Each cycle consumes the flaws. When there is nothing left to burn, the project is born."
Run every applicable cli-* skill on the current project, collect results, deliver the complete list of corrections in 3 tiers, and loop until clean.
--converge, run the entire loop in an isolated worktree, then present a single unified plan. Read references/convergence.md for the full algorithm.references/skill-flow.md for the complete trigger graph, deduplication rules, and cycle detection.Gotchas — read ../gotchas.md before producing output to avoid known mistakes.
$ARGUMENTS can be:
src/features/dlp/) → scoped audit (vertical slice)Scoped audit rules:
$ARGUMENTS to every sub-agent: /cli-audit-code {scope}, /cli-audit-test {scope}, etc.cli-forge-pipeline, cli-forge-github) are skipped — they are project-wide by nature# Cycle — {project} / {scope}{scope}/**/test*, {scope}/**/*_test.*, {scope}/**/tests/{scope}/**/*.md, {scope}/**/README*Applicability in scoped mode:
| Skill | Scoped? | Why |
|---|---|---|
cli-audit-code | ✅ | Scans only the slice's code |
cli-audit-xray | ✅ if scope has source code and optimization/dataflow signals | Scans semantic/resource-flow candidates within the slice |
cli-audit-doc | ✅ | Scans only the slice's docs |
cli-audit-test | ✅ | Scans only the slice's tests |
cli-audit-tangle | ✅ | Analyzes call graph within the slice |
cli-audit-drift | ✅ if scope has CONTRACTS.md entries | Checks contracts for functions in the slice |
cli-audit-review | ✅ if scope contains an active diff or MR/PR review context | Reviews changed behavior as a merge gate |
cli-audit-sync | ✅ | Checks doc-code coherence within the slice |
cli-audit-shell | ✅ if scope has .sh files | Audits shell scripts in the slice |
cli-forge-readme | ❌ | README is project-wide |
cli-forge-tree | ✅ | Audits only the slice's structure |
cli-forge-pipeline | ❌ | CI is project-wide |
cli-forge-schema | ✅ | Audits diagrams referencing the slice |
cli-forge-infra | ❌ | Infra is project-wide |
cli-forge-github | ❌ | Repo config is project-wide |
cli-audit-wizard | ❌ | Wizard UX is project-wide |
Resolve SKILLS_ROOT:
1. $CODEX_HOME/skills if set and exists
2. ~/.codex/skills if it exists and contains cli-*/SKILL.md
3. ~/.claude/skills if it exists and contains cli-*/SKILL.md
Glob: $SKILLS_ROOT/cli-*/SKILL.mdParse each SKILL.md frontmatter to extract: name, description, argument-hint.
git log --oneline -10 + head -20 README.md. Whatever language dominates the commits and README is the language all report output must use. Inject that language into every sub-agent prompt. No exceptions.Cargo.toml, package.json, go.mod, etc.)README.md, docs/, *.md.md filesDockerfile, docker-compose.yml, *.tf, helmfile.yamltests/, test/, spec/, e2e/CONTRACTS.md.github/workflows/, .gitlab-ci.ymlRead references/orchestration.md for the full applicability matrix. Key rule: don't run skills that don't apply — no infra files = no infra audit.
Read references/orchestration.md for execution order, prompt patterns, and wave rules.
Wave 1 (foundation, parallel): code, doc, test, tangle, tree, readme, shell, wizard — independent scans Wave 2 (cross-cutting + handoffs, parallel): review, sync, drift, pipeline, schema, infra + skills recommended by Wave 1 handoffs Wave 3 (adaptive, if needed): skills recommended by Wave 2 handoffs that haven't run yet
Wave 2 skills get Wave 1 summaries injected. Handoff-recommended skills get the caller's reason injected. Deduplication prevents duplicate runs (same skill + same scope = run once). See references/orchestration.md for the full adaptive handoff algorithm.
Read references/orchestration.md for templates and the full Phoenix triage rules.
Critical rule: show every correction found. Never truncate.
Produce a unified report with:
docs/reviews/, compare scores#### Triage 3-2-1 (inspired by emergency medicine triage + immune system)
Every correction goes into exactly one tier. The tiers define treatment order, not importance:
| Tier | Name | Criteria | Action |
|---|---|---|---|
| 🔴 Tier 3 | Critical | Security flaws, broken functionality, data loss risk, hardcoded secrets, missing error handling that causes silent failure | Fix NOW — these block everything |
| 🟡 Tier 2 | Major | Architecture debt, missing tests, obsolete docs, non-pinned versions, code smells with real impact (god functions, duplication) | Fix NEXT — these degrade over time |
| 🟢 Tier 1 | Minor | Style, missing diagrams, nice-to-have docs, structural organization, cosmetic improvements | Fix LATER — these improve but don't protect |
Display rules:
#, description, effort (Low/Medium/High), source skill🔴 Tier 3 — Critical (4 items)After presenting the full triage, ask the user. Phrase the prompt in the project's detected language; the English version below is the canonical template:
Phoenix — Which tier should we tackle?
[1] Fix everything (autonomous convergence, unified plan)
[2] Fix 🔴 critical only (N items)
[3] Fix 🟡 major only (N items)
[4] Fix 🟢 minor only (N items)
[5] Not nowOption [1] = autonomous convergence. The cycle runs in an isolated worktree, performs all passes autonomously with file-based tracking (so no items get forgotten), then presents ONE unified plan to approve or reject. No per-item "interactive" mode — that proved too fragile.
Convention conservation law (read `../gotchas.md` section "Convention conservation"):
Before ANY correction that touches a convention (file extension, naming, indentation, quoting, language), verify that a concrete external force justifies the change. Otherwise, preserve the project's current state. Consistency, best-practice, and aesthetics are NOT forces.
File-based tracking is MANDATORY (prevents the LLM from forgetting items):
mkdir -p .claude/cycle-progress
# Write the full triage as a checklist to current.md before startingWhen the user chooses any correction option, follow this pipeline with explicit per-item iteration:
1. Write triage to .claude/cycle-progress/current.md (all items as [ ])
2. FOR EACH item in the selected tier (sequential, no batching):
a. FIX: edit code/config directly OR trigger the forge skill
b. GENERATE: if missing docs/diagrams → run the appropriate forge skill
c. COMMIT: format with cli-git-conventional (ghostwriter, zero AI markers)
d. MARK: update current.md from [ ] to [x]
e. LOG: append to .claude/cycle-progress/log.txt with timestamp
NEVER skip an item. NEVER mark multiple items as done in batch.
3. VERIFY: grep "\[ \]" current.md → must return 0 unfinished items
If unfinished items remain → RESTART the loop, you forgot some
4. RE-AUDIT: re-run only the skills that sourced the fixed itemsForge skills triggered automatically by audit findings:
| Audit finding | Forge skill triggered | What it produces |
|---|---|---|
| Missing CONTRIBUTING.md, architecture docs | cli-forge-doc | CONTRIBUTING.md, docs/explanation/architecture.md |
| Missing or outdated README | cli-forge-readme | Updated README.md |
| Missing diagrams | cli-forge-schema | Mermaid diagrams in docs or README |
| CI/CD issues (missing stages, parallelism) | cli-forge-pipeline | Updated pipeline config |
| Code fixes, config fixes | Direct edit | Modified files |
cli-git-conventional is ALWAYS used — every correction commit goes through ghostwriter format. No exceptions, no AI trailers.
Example correction sequence:
Triage item #5: "Missing CONTRIBUTING.md" (source: cli-audit-doc)
→ cli-forge-doc generates CONTRIBUTING.md (absorbs CLAUDE.md content if present)
→ git add CONTRIBUTING.md
→ cli-git-conventional: "docs: add contributing guide with commit rules and git workflow"
→ cli-audit-doc re-runs → item resolved
Triage item #1: "Hardcoded password in Containerfile" (source: cli-audit-code)
→ Direct edit: remove hardcoded value, add env var
→ git add Containerfile entrypoint.sh
→ cli-git-conventional: "fix(security): externalize healthcheck password"
→ cli-audit-code re-runs → item resolved, may find cascade itemsIf the user chooses [1] Fix everything:
references/convergence.md for the full algorithmThe cycle stops automatically when any of these conditions is met:
| Condition | Meaning |
|---|---|
| No 🔴 Tier 3 and no 🟡 Tier 2 items remain | Project is healthy — only cosmetic items left |
| Re-audit finds 0 new issues vs. previous pass | Fixes didn't introduce regressions — stable |
User chooses [5] | Explicit stop |
When the cycle converges, output (translated into the project's detected language; English template below):
🔥 Phoenix — Cycle complete
Passes performed: N
Issues resolved: X / Y
Score: before → after
The project has converged. No critical or major flaws remain.docs/ exists): docs/reviews/{YYYY-MM-DD}-audit.md — includes full triage and convergence status/loop 7d /cli-cycle .The skill automatically detects previous reports in docs/reviews/ and shows progression.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.