Best for
- Use when the user explicitly asks to run desloppify, scan for technical debt, get a health score, or create a cleanup plan.
gobifrost/bifrost/.codex/skills/desloppify/SKILL.md
Multi-language codebase health scanner. Use when the user explicitly asks to run desloppify, scan for technical debt, get a health score, or create a cleanup plan. Do NOT trigger for general code review, renaming, or fixing individual bugs.
Decision brief
Multi-language codebase health scanner. Do NOT trigger for general code review, renaming, or fixing individual bugs.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/gobifrost/bifrost --skill ".codex/skills/desloppify"Inspect the Agent Skill "desloppify" from https://github.com/gobifrost/bifrost/blob/3e53e2c53db6b1db1712cb62a013ffe8885dedbe/.codex/skills/desloppify/SKILL.md at commit 3e53e2c53db6b1db1712cb62a013ffe8885dedbe. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Three phases, repeated as a cycle.
After scanning, always run desloppify next — it tells you exactly what to do, in order. Don't interpret the scan output yourself or ask the user what to do. Just run next and follow its instructions.
After reviews, triage stages and plan creation appear in the execution queue surfaced by next. Complete them in order — next tells you what each stage expects in the --report:
Trust the plan and execute. Don't rescan mid-queue — finish the queue first.
Return machine-readable JSON for review imports. For --external-submit, include session from the generated template:
Permission review
The documentation asks the agent to read local files, directories, or repositories.
If the workspace contains multiple programs (e.g., frontend + backend in sibling folders), scan each one separately — do not scan the parent directory:The documentation asks the agent to read local files, directories, or repositories.
### Phase 1: Scan and review — understand the codebaseThe documentation asks the agent to run terminal commands or scripts.
git checkout -b desloppify/code-health # or desloppify/<focus-area>The documentation asks the agent to run terminal commands or scripts.
git add <files> && git commit -m "desloppify: fix 3 deferred_import findings"The documentation includes network, browsing, or remote request actions.
git clone https://github.com/peteromallet/desloppify.git /tmp/desloppify-fixEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 92/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 59 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Maximise the strict score honestly. Your main cycle: scan → plan → execute → rescan. Follow the scan output's INSTRUCTIONS FOR AGENTS — don't substitute your own analysis.
Don't be lazy. Do large refactors and small detailed fixes with equal energy. If it takes touching 20 files, touch 20 files. If it's a one-line change, make it. No task is too big or too small — fix things properly, not minimally.
Three phases, repeated as a cycle.
If the workspace contains multiple programs (e.g., frontend + backend in sibling folders), scan each one separately — do not scan the parent directory:
desloppify --lang typescript scan --path ./frontend
desloppify --lang python scan --path ./backend
Each --path target should be a single coherent project. Scanning a parent that contains multiple programs mixes state and path context, producing unreliable results.
desloppify scan --path . # analyse the codebase
desloppify status # check scores — are we at target?
After scanning, always run desloppify next — it tells you exactly what to do, in order. Don't interpret the scan output yourself or ask the user what to do. Just run next and follow its instructions.
The scan will tell you if subjective dimensions need review. Follow its instructions. To trigger a review manually:
desloppify review --prepare # then follow your runner's review workflow
After reviews, triage stages and plan creation appear in the execution queue surfaced by next. Complete them in order — next tells you what each stage expects in the --report:
desloppify next # shows the next execution workflow step
desloppify plan triage --stage observe --report "themes and root causes..."
desloppify plan triage --stage reflect --report "comparison against completed work..."
desloppify plan triage --stage organize --report "summary of priorities..."
desloppify plan triage --complete --strategy "execution plan..."
For automated triage: desloppify plan triage --run-stages --runner codex (Codex), --runner claude (Claude), or --runner rovodev (Rovo Dev). Options: --only-stages, --dry-run, --stage-timeout-seconds.
Then shape the queue. The plan shapes everything next gives you — next is the execution queue, not the full backlog. Don't skip this step.
desloppify plan # see the living plan details
desloppify plan queue # compact execution queue view
desloppify plan reorder <pat> top # reorder — what unblocks the most?
desloppify plan cluster create <name> # group related issues to batch-fix
desloppify plan focus <cluster> # scope next to one cluster
desloppify plan skip <pat> # defer — hide from next
Trust the plan and execute. Don't rescan mid-queue — finish the queue first.
Branch first. Create a dedicated branch — never commit health work directly to main:
git checkout -b desloppify/code-health # or desloppify/<focus-area>
desloppify config set commit_pr 42 # link a PR for auto-updated descriptions
The loop:
# 1. Get the next item from the execution queue
desloppify next
# 2. Fix the issue in code
# 3. Resolve it (next shows the exact command including required attestation)
# 4. When you have a logical batch, commit and record
git add <files> && git commit -m "desloppify: fix 3 deferred_import findings"
desloppify plan commit-log record # moves findings uncommitted → committed, updates PR
# 5. Push periodically
git push -u origin desloppify/code-health
# 6. Repeat until the queue is empty
Score may temporarily drop after fixes — cascade effects are normal, keep going.
If next suggests an auto-fixer, run desloppify autofix <fixer> --dry-run to preview, then apply.
When the queue is clear, go back to Phase 1. New issues will surface, cascades will have resolved, priorities will have shifted. This is the cycle.
next. Drill in with next --cluster <name>.zone set.Overall score = 25% mechanical + 75% subjective.
Four paths to get subjective scores:
desloppify review --run-batches --runner codex --parallel --scan-after-import — automated end-to-end.desloppify review --prepare → launch parallel subagents → desloppify review --import merged.json — see skill doc overlay for details.desloppify review --run-batches --runner rovodev --parallel --scan-after-import — automated end-to-end via acli rovodev run subprocesses.desloppify review --external-start --external-runner claude → follow session template → --external-submit.desloppify review --prepare → review per dimension → desloppify review --import file.json.Batch output vs import filenames: Individual batch outputs from subagents must be named batch-N.raw.txt (plain text/JSON content, .raw.txt extension). The .json filenames in --import merged.json or --import findings.json refer to the final merged import file, not individual batch outputs. Do not name batch outputs with a .json extension.
Subagent parallelism limit: Do not launch every review batch at once. Run subagents in small waves, usually 3-5 concurrent agents, and wait for a wave to finish before starting the next. If agents return empty, partial, or rate-limit-shaped results, reduce the wave size and retry only failed batches. Launching 20+ subagents at once can exhaust API quota and produce no usable review output.
docs/CLAUDE.md, docs/HERMES.md).next — just follow the queue.Integrity rules: Score from evidence only — no prior chat context, score history, or target-threshold anchoring. When evidence is mixed, score lower and explain uncertainty. Assess every requested dimension; never drop one.
Return machine-readable JSON for review imports. For --external-submit, include session from the generated template:
{
"session": {
"id": "<session_id_from_template>",
"token": "<session_hmac_from_template>"
},
"assessments": {
"<dimension_from_query>": 0
},
"findings": [
{
"dimension": "<dimension_from_query>",
"identifier": "short_id",
"summary": "one-line defect summary",
"related_files": ["relative/path/to/file.py"],
"evidence": ["specific code observation"],
"suggestion": "concrete fix recommendation",
"confidence": "high|medium|low"
}
]
}
findings MUST match query.system_prompt exactly (including related_files, evidence, and suggestion). Use "findings": [] when no defects found. Import is fail-closed: invalid findings abort unless --allow-partial is passed. Assessment scores are auto-applied from trusted internal or cloud session imports. Legacy --attested-external remains supported.
desloppify review --external-start --external-runner claude → use generated prompt/template → run printed --external-submit command.desloppify review --import findings.json --attested-external --attest "I validated this review was completed without awareness of overall score and is unbiased."desloppify review --import findings.jsonRunners that support agent definitions (Cursor, Copilot, Gemini) can create a dedicated reviewer agent. Use this system prompt:
You are a code quality reviewer. You will be given a codebase path, a set of
dimensions to score, and what each dimension means. Read the code, score each
dimension 0-100 from evidence only, and return JSON in the required format.
Do not anchor to target thresholds. When evidence is mixed, score lower and
explain uncertainty.
See your editor's overlay section below for the agent config format.
desloppify plan reorder <cluster> top # move all cluster members at once
desloppify plan reorder <a> <b> top # mix clusters + findings in one reorder
desloppify plan reorder <pat> before -t X # position relative to another item/cluster
desloppify plan cluster reorder a,b top # reorder multiple clusters as one block
desloppify plan resolve <pat> # mark complete
desloppify plan reopen <pat> # reopen
desloppify backlog # broader non-execution backlog
desloppify plan commit-log # see uncommitted + committed status
desloppify plan commit-log record # record HEAD commit, update PR description
desloppify plan commit-log record --note "why" # with rationale
desloppify plan commit-log record --only "smells::*" # record specific findings only
desloppify plan commit-log history # show commit records
desloppify plan commit-log pr # preview PR body markdown
desloppify config set commit_tracking_enabled false # disable guidance
After resolving findings as fixed, the tool shows uncommitted work, committed history, and a suggested commit message. After committing externally, run record to move findings from uncommitted to committed and auto-update the linked PR description.
Directives are messages shown to agents at lifecycle phase transitions — use them to switch models, set constraints, or give context-specific instructions.
desloppify directives # show all configured directives
desloppify directives set execute "Switch to claude-sonnet-4-6. Focus on speed."
desloppify directives set triage "Switch to claude-opus-4-6. Read carefully."
desloppify directives set review "Use blind packet. Do not anchor on previous scores."
desloppify directives unset execute # remove a directive
Available phases: execute, review, triage, workflow, scan (and fine-grained variants like review_initial, triage_postflight, etc.).
desloppify next --count 5 # top 5 execution items
desloppify next --cluster <name> # drill into a cluster
desloppify backlog --count 5 # top 5 backlog items outside execution
desloppify show <pattern> # filter by file/detector/ID
desloppify show --status open # all open findings
desloppify plan skip --permanent "<id>" --note "reason" --attest "..." # accept debt
desloppify exclude <path> # exclude a directory from scanning
desloppify config show # show all config including excludes
desloppify scan --path . --reset-subjective # reset subjective baseline to 0
When desloppify itself appears wrong or inconsistent — a bug, a bad detection, a crash, confusing output — fix it and open a PR. If you can't confidently fix it, file an issue instead.
Clone the tool repo to a temp directory, make the fix there, and verify it works against the project you're scanning before pushing.
git clone https://github.com/peteromallet/desloppify.git /tmp/desloppify-fix
cd /tmp/desloppify-fix
git checkout -b fix/<short-description>
Make your changes, then run the test suite and verify the fix against the original project:
python -m pytest desloppify/tests/ -q
python -m desloppify scan --path <project-root> # the project you were scanning
Once it looks good, push and open a PR:
git add <files> && git commit -m "fix: <what and why>"
git push -u origin fix/<short-description>
gh pr create --title "fix: <short description>" --body "$(cat <<'EOF'
## Problem
<what went wrong — include the command and output>
## Fix
<what you changed and why>
EOF
)"
Clean up after: rm -rf /tmp/desloppify-fix
If the fix is unclear or the change needs discussion, open an issue at https://github.com/peteromallet/desloppify/issues with a minimal repro: command, path, expected output, actual output.
command -v desloppify >/dev/null 2>&1 && echo "desloppify: installed" || echo "NOT INSTALLED — run: uvx --from git+https://github.com/peteromallet/desloppify.git desloppify"
If uvx is not available: pip install desloppify[full] && desloppify setup
Use Claude subagents for subjective scoring work. Do not use --runner codex — use Claude subagents exclusively.
Run desloppify review --prepare first to generate review data, then use Claude subagents:
desloppify review --prepare — writes query.json and .desloppify/review_packet_blind.json.desloppify review --import merged.json --manual-override --attest "Claude subagents ran blind reviews against review_packet_blind.json" --scan-after-import.dimension_prompts from query.json for dimensions with definitions and seed files..desloppify/review_packet_blind.json for the blind packet (no score targets, no anchoring data).subagent_type: "general-purpose". Each agent gets:
results/batch-N.raw.txt (matching the batch index). Merge assessments (average overlapping dimension scores) and concatenate findings..desloppify/review_packet_blind.json (not full query.json) to avoid score anchoring.Orchestrate triage with per-stage subagents:
desloppify plan triage --run-stages --runner claude — prints orchestrator instructionsdesloppify plan triage --stage-prompt <stage>desloppify plan triage (check dashboard)desloppify plan triage --confirm <stage> --attestation "..."desloppify plan triage --complete --strategy "..." --attestation "..."Frequently asked questions
Multi-language codebase health scanner. Do NOT trigger for general code review, renaming, or fixing individual bugs.
The source record exposes this install command: npx skills add https://github.com/gobifrost/bifrost --skill ".codex/skills/desloppify". Inspect the command and pinned source before running it.
The pinned source record declares support for: claude code.
Static rules flagged read-files, exec-script, network in the source; the page lists the matching lines and excerpts.
Alternatives
ruvnet/RuView
Comprehensive GitHub code review with AI-powered swarm coordination
oaustegard/claude-skills
Enables GitHub repository operations (read/write/commit/PR) for Claude.ai chat environments. Use when users request GitHub commits, repository updates, DEVLOG persistence, or cross-session state management via GitHub branches. Not needed in Claude Code (has native git access).
ruvnet/ruflo
Comprehensive GitHub code review with AI-powered swarm coordination
upex-galaxy/agentic-qa-boilerplate
End-to-end Git operator for any branching strategy. Auto-detects the project's strategy (solo-main, main+integration, enterprise multi-branch, trunk-based, GitFlow, GitHub Flow, GitLab Flow, SDET integration-trunk for chained test-automation suites) from .git config, branches, and the `git_strategy:` block in `.agents/project.yaml`, then adapts every commit, branch, push, PR, conflict-fix, and chained-PR action to that strategy. Use this skill whenever the user wants to: create a branch (`crear