From devboy
Analyzes dev session traces from failure streaks to success, extracts what changed, and proposes codification in SKILL.md, AGENTS.md bullets, or tickets. Use post-debug or after daily-report.
npx claudepluginhub meteora-pro/devboy-tools --plugin devboyThis skill uses the workspace's default tool permissions.
Inspects a single session trace that went from a failure streak to a
Reviews completed coding sessions to extract actionable improvements: DX friction, documentation gaps, architecture issues, anti-patterns, bug prevention, and tooling updates.
Extracts reusable patterns like error resolutions, workarounds, and debugging techniques from Claude Code sessions, saving them as new skills in ~/.claude/skills/. Use after long sessions or complex fixes.
Analyzes completed dev tracks to extract learnings, patterns, and errors; updates knowledge base files and proposes skill improvements post-COMPLETE.
Share bugs, ideas, or general feedback.
Inspects a single session trace that went from a failure streak to a
clean success, pulls out what changed between "not working" and
"working", and proposes where the lesson belongs — a SKILL.md edit, an
AGENTS.md / CLAUDE.md bullet, or a ticket. The skill is
read-only. It prints a proposal to stdout; the user decides whether
to act on it.
daily-report flagged as "recovered after
multiple failures".Accept one of:
--session-dir <path> — absolute or relative path to a real
per-session directory such as
.devboy/sessions/<YYYY-MM-DD>/<skill>/<session_id>/. If the
directory contains meta.json and trace.jsonl, use it directly.--pick — interactive mode: enumerate today's <skill>/<session_id>/
directories whose meta.json has outcome = success and errors > 0,
and let the user pick one. This is the common follow-up after
daily-report.Exit with a clear error if neither flag is set or the directory is not a well-formed session.
The extract itself is traced — retros care about how often the team reaches for this skill.
result=$(devboy trace begin --skill knowledge-extract)
SESSION_DIR=$(echo "$result" | jq -r .session_dir)
SESSION_ID=$(echo "$result" | jq -r .session_id)
Record a decision event naming the target session dir.
Read trace.jsonl line by line. Lines that fail to deserialise as
JSON are skipped with a single note event — do not abort. For each
valid record keep: ts, phase, payload.
Compute three spans:
tool_result.ok = false or verify.ok = false — possibly
interleaved with note, decision, or further tool_call events
that target the same tool or check.tool_result.ok = true or verify.ok = true on the same tool or
check as the streak.decision and note events that appear
between the last failing event and the flip point — those record
what the agent or user tried differently.If the trace has no failure streak (only clean successes), print a
short message saying there is nothing to extract and end the meta-
trace with outcome: aborted.
One short paragraph, plain English. Template:
After failing
<tool-or-check><N>times with<common-error>, switching to<approach-described-in-setup-delta>fixed it because<why, if the decision/note events state it>.
If the trace does not justify the "because" clause, leave it out rather than making something up.
Classify the fix and propose exactly one home:
get_pipeline with
includeFailedLogs: false when the MR is large") — propose a
SKILL.md edit on the skill that owns the call. Name the file
(skills/<category>/<skill>/SKILL.md) and quote the exact
sentence to add.CLAUDE.md, AGENTS.md, or
the project's own guide, quoting the sentence.create-issue, including a draft title and two-sentence
reproduction, but do not create it.Only one home per lesson. If the fix really belongs in two places, split the extraction into two successive invocations.
Print to stdout:
# Lesson extracted from <session-dir>
## What happened
<one paragraph>
## Lesson
<one paragraph>
## Proposed codification
Target: skills/02-code-review/review-mr/SKILL.md
Edit:
> Add the following to the "Procedure" section, after step 3:
> "When the MR touches more than 50 files, pass
> includeFailedLogs: false to get_pipeline — otherwise the response
> overflows the context window."
Do not apply the edit. Do not open the file. Do not create the ticket.
devboy trace end \
--session-dir "$SESSION_DIR" --session-id "$SESSION_ID" \
--skill knowledge-extract \
--outcome "$OUTCOME" \
--summary "lesson proposal for <original-skill>"
tool_call /
tool_result / verify events with timestamps from the trace.SKILL.md, never opens a PR, never calls create_issue or
add_issue_comment. Proposals are text on stdout.<redacted:token-pattern> in response body). Do not guess at the underlying value.outcome: aborted.