Crap Analyzer
swingerman/engineer
A skill your agent uses to produce a risk-based refactor + test plan for recently-changed code on a diff/branch/PR by computing CRAP (complexity × untested) on changed methods.
Use at the start of a work session, or any time the question is "what should I pick up now" across the whole project.
$ npx skills add swingerman/engineer --skill next -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install swingerman/engineer next --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/swingerman/engineer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/engineer/skills/next .claude/skills/next && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "next" agent skill from https://github.com/swingerman/engineer/tree/master/engineer/skills/next into .claude/skills/next/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/swingerman/engineer/tree/master/engineer/skills/nextType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add swingerman/engineer --skill next -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install swingerman/engineer next --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swingerman/engineer.git skills-src && mkdir -p .agents/skills && cp -r skills-src/engineer/skills/next .agents/skills/next && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "next" agent skill from https://github.com/swingerman/engineer/tree/master/engineer/skills/next into .agents/skills/next/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swingerman/engineer --skill next -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install swingerman/engineer next --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swingerman/engineer.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/engineer/skills/next .cursor/skills/next && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "next" agent skill from https://github.com/swingerman/engineer/tree/master/engineer/skills/next into .cursor/skills/next/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/swingerman/engineer.git --path engineer/skills/next--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add swingerman/engineer --skill next -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install swingerman/engineer next --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swingerman/engineer.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/engineer/skills/next .gemini/skills/next && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "next" agent skill from https://github.com/swingerman/engineer/tree/master/engineer/skills/next into .gemini/skills/next/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install swingerman/engineer nextInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add swingerman/engineer --skill next -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/swingerman/engineer.git skills-src && mkdir -p .github/skills && cp -r skills-src/engineer/skills/next .github/skills/next && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "next" agent skill from https://github.com/swingerman/engineer/tree/master/engineer/skills/next into .github/skills/next/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swingerman/engineer --skill next -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install swingerman/engineer next --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swingerman/engineer.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/engineer/skills/next .opencode/skills/next && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "next" agent skill from https://github.com/swingerman/engineer/tree/master/engineer/skills/next into .opencode/skills/next/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
nextUse at the start of a work session, or any time the question is "what should I pick up now" across the whole project.
Next is an agent skill from swingerman/engineer. Use at the start of a work session, or any time the question is "what should I pick up now" across the whole project. Triggers — "/engineer.next", "what's next", "what should I work on", "what should I do next", "where do I pick up".
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Disciplined Agentic Engineering — a methodology kit for Claude Code: acceptance-test-first specs, explicit checkpoints, and autonomy you can actually leave running. The engineer… The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 32947eb. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
notion.soFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Next loads about 3k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 1,039 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from swingerman/engineer at commit 32947eb, republished under its MIT licence (© swingerman). 1,039 words, ~3,031 tokens.
.claude/skills/next/SKILL.md (or your agent's skills folder).The session-start skill — the human's re-entry point. Surveys every source of DAE state and answers one question: what should I pick up now?
Read-only and advisory. It changes nothing, produces no artifact, and emits no handoff (the recommendation is the whole output; a handoff would just restate it). This is a deliberate exception to the agentic-summary contract — next is a query, not a task that changes state.
next is the read-side bookend to session-summary: session-summary writes "here's where I left off, next tasks" at session end; next consumes that — and everything else — at session start.
Start of a session, or any "what now?" moment. Project-scope; surveys the whole project — there is no narrower scope.
Not for: loading context on a feature you've already chosen (prime-context); checking artifact consistency (consistency-check); a per-feature next-step (each skill's handoff already carries recommended_next).
Resolve the methodology root + manifest via ${CLAUDE_PLUGIN_ROOT}/scripts/dae_resolve.py (see references/resolving.md). Then read, read-only:
features/*/feature.md (status) + progress.md (current checkpoint; whether it's blocked or ready to advance). For each in-flight feature, run ${CLAUDE_PLUGIN_ROOT}/scripts/dae_reconcile.py <feature-dir> (read-only): if it reports needs_reconcile: true, the feature's PR is merged but its local state hasn't caught up — this is the authoritative merged-detection (via gh, so it catches squash-merge and git.manual, which the current-branch git-ancestry check below misses). Surface these under NEEDS YOUR DECISION and, at autonomy medium/high, offer /engineer.post-merge to reconcile (which flips the status and propagates). A flag: merged-unverified means it shipped without CP7 — call that out..engineer/consolidation.md if present (coverage backlog + triage order)local = ${CLAUDE_PLUGIN_ROOT}/scripts/dae_roadmap.py next-unstarted; MCP/CLI/API-backed = the connected channel — see references/roadmap.md). This is the "what's next in the roadmap" altitude — candidate features not yet promoted to a feature folder, the forward-looking complement to the consolidation backlog. If manifest.roadmap.type is none, or its host is unreachable (MCP disconnected / CLI gone), skip it with a one-line note — degrade gracefully, never error.features/*/ with status: parked; .engineer/discussions.logSlug yet (the reconcile() orphan-as-intake case, see references/tracker.md), or .engineer/inbox.md lines in local mode. These are quick-captured bugs/ideas/tasks awaiting triage — not yet a feature or fix.handoffs/*.md (per-feature and .engineer/handoffs/) flagged human_action_needed: yessession-log.md entry per active feature ("Next tasks")cloud_session_url (running on a cloud agent; PR pending). Surface as DISPATCHED — not actionable until the PR lands..engineer/fixes/*.md via ${CLAUDE_PLUGIN_ROOT}/scripts/dae_fix.py list_open_fixes (status != closed)main/master, run git fetch origin --quiet then check git merge-base --is-ancestor HEAD origin/HEAD (fallback origin/main). If true, the branch is merged and lingering — surface it as a STALE BRANCH item. (This git check only catches the current branch and only non-squash merges; the per-feature dae_reconcile.py probe above is the broader, gh-based merged-detection.)If a stale merged branch was detected, defer to the post-merge skill — it owns the full cleanup flow (checkout, pull, branch -d, prune, tracker update). At autonomy high/medium, auto-invoke /engineer.post-merge before continuing to Step 2. At low, surface the finding and stop until the user invokes it themselves. Do not inline the cleanup commands here — keep next advisory and let the dedicated skill do the work, so the post-merge handoff lands in the audit trail.
NEEDS YOUR DECISION — blocked features; handoffs flagged human_action_needed.
These stall progress — surface them first.
OPEN FIXES — bug-fix artifacts not yet closed. Sub-priority within the bucket:
1. blocks_user: true AND workaround: none ← top (user is hit right now)
2. blocks_user: true AND workaround: <text> ← middle (user has a workaround)
3. blocks_user: false ← bottom
Within each tier, order by severity (critical, high, medium, low).
READY TO ADVANCE — in-flight features sitting at a checkpoint that can proceed.
READY TO DISPATCH — features / consolidation tasks that can go to a cloud agent
right now (bounded, automatable verification, no mid-stream
human input needed). At medium/high autonomy the dispatch
router auto-sends these (gated by dae_delegable.py).
DISPATCHED — already running on a cloud agent (handoff carries
cloud_session_url). Show the session / PR link; review when
it lands. Not actionable until then.
TRIAGE — tasks added directly to the tracker (a row with no Slug
yet) or to .engineer/inbox.md — bugs/ideas/tasks dropped
in for DAE to pick up, not yet a feature or fix. For each:
promote (→ /fix, /discuss, /feature-init) or defer. A
triage bug that blocks users ranks with OPEN FIXES top tier.
ON THE ROADMAP — the next unstarted strategic feature(s) — roadmap items
(status: planned, no feature_slug yet), ordered by
horizon (now → next → later) then priority. This is the
"what's next in the roadmap" answer: the highest-altitude
candidate to START, distinct from finishing in-flight
work. Promote via /discuss or /feature-init (writes
roadmap_ref + marks the item in-progress — see
references/roadmap.md). Items already in-flight (they
carry a feature_slug) are hidden here — they appear under
READY TO ADVANCE instead.
COULD START — the next consolidation-backlog item; parked ideas worth
promoting; fresh work.Priority order:
blocks_user: true and no workaround ranks above starting fresh feature work; a real defect hitting users now is more urgent than forward progress on new scope. A TRIAGE capture that reads as a user-blocking bug ranks here too — promote it to a /fix first.target dates.Present the eight buckets, then a two-altitude answer — because "what's next" has two valid readings and the human asked for both:
ON THE ROADMAP item: the next strategic feature to begin once there's capacity. Always shown so "what's next in the roadmap" is answered directly, even when the top actionable pick is finishing something else.Give one top recommendation with a one-line rationale and a suggested execution mode (you, local subagent, agent team, or cloud agent — for the last, the dispatch router gates via dae_delegable.py); name the roadmap's next-to-start alongside it. If in-flight work is clear (nothing to advance, no open fixes), the roadmap's next-to-start becomes the top pick.
Promoting a TRIAGE item is the human's call — next only recommends. Work it now → promote to the right unit and start: bug→/fix, idea→/discuss, task→/feature-init (each reads the tracker row as intake, reuses its tracker_ref, and writes the assigned Slug back — no duplicate row). Later → leave it, optionally raise a priority/Status. Drop → set Status: wontfix.
next recommends; it does not act. The human picks, then invokes the relevant skill themselves (prime-context, discuss, feature-init, a consolidation task, …). No handoff is emitted.
NEEDS YOUR DECISION (1)
• 042-customer-export — plan.md has a charter deviation; approve amendment ADR-012 or revise
OPEN FIXES (2)
• 2026-05-20-login-crash [critical] blocks_user=true workaround=none — login fails on iOS 17
• 2026-05-18-export-timeout [high] blocks_user=true workaround="retry after 30 s"
READY TO ADVANCE (1)
• 015-image-formats — at Checkpoint 2; ACs done, ready for /atdd:atdd
READY TO DISPATCH (2)
• consolidation #1 core-image-generation — full ATDD coverage; remote one-shot
• consolidation #3 mcp-connector — remote one-shot
TRIAGE (2)
• bug: CSV export drops the UTF-8 BOM | blocks_user=yes — added to tracker, no slug yet
• idea: dark mode for the settings page
ON THE ROADMAP (2)
• bulk-export [now/p1] — admins export all records as CSV; not yet started
• dark-mode [next/p1] — settings dark theme
COULD START (1)
• parked: bulk-admin-export — discussed 3 weeks ago; promote if priorities allow
→ TOP PICK (advance): fix 2026-05-20-login-crash. Users are hitting a critical crash
on iOS 17 with no workaround — this outranks new feature work. Run /fix to continue.
Then approve 042-customer-export's plan to unblock its pipeline.
→ NEXT TO START (roadmap): bulk-export — the top "now" item, unstarted. When the
crash is cleared, promote it with /discuss or /feature-init.prime-contextconsistency-check --projectsession-summarysession-summary — the session-end bookend.fix — produces the OPEN FIXES artifacts surfaced here.references/roadmap.md — the roadmap drivers behind the ON THE ROADMAP bucket; dae_roadmap.py next-unstarted.${CLAUDE_PLUGIN_ROOT}/references/host-capabilities.md — the optional render capability. Eight buckets of in-flight work is a dashboard wearing a list's clothing; offer a rendered board alongside — never instead of — the text survey.© swingerman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in engineer/skills/next of swingerman/engineer.
Open the folder on GitHubat commit 32947eb
swingerman/engineer
A skill your agent uses to produce a risk-based refactor + test plan for recently-changed code on a diff/branch/PR by computing CRAP (complexity × untested) on changed methods.
swingerman/engineer
A skill your agent uses to add a third validation layer to the ATDD workflow — after acceptance tests verify WHAT and unit tests verify HOW, mutation testing verifies the tests actually catch bugs.
swingerman/engineer
A skill your agent uses to drive a bug fix from first report through close, with a "why didn't we catch it?" loop at the end.
swingerman/engineer
A skill your agent uses to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and two parallel test…
swingerman/engineer
Use after a feature passes Light Verify (CP7), to prove the tests actually catch bugs and, where the code warrants it, to formally check its invariants — Checkpoint 8.
swingerman/engineer
Use immediately after a PR is merged to clean up the local feature branch and resync main.
Use at the start of a work session, or any time the question is "what should I pick up now" across the whole project. Next is an agent skill from swingerman/engineer. Use at the start of a work session, or any time the question is "what should I pick up now" across the whole project.
Next fits situations like: — /engineer.next; what should I work on; what should I do next; where do I pick up.
Run `npx skills add swingerman/engineer --skill next -a claude-code`. Or copy the skill folder (engineer/skills/next in swingerman/engineer) into .claude/skills/next in your project. Claude Code loads it when a task matches its description.
Run `npx skills add swingerman/engineer --skill next -a codex`. Or copy the skill folder (engineer/skills/next in swingerman/engineer) into .agents/skills/next in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add swingerman/engineer --skill next -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/next, .gemini/skills/next, .github/skills/next and .opencode/skills/next in your project.
Going by SKILL.md and its folder, Next needs the command-line tools its instructions call (git).
SKILL.md names 1 domain. As links in the text: notion.so. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Next is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
swingerman (a GitHub user) maintains it in swingerman/engineer, which has 154 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on September 23, 2026.
Source: swingerman/engineer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.