dpf-systematic-debugging
Use when a DPF symptom needs a root cause — a failing build, a wedged runtime, a stuck job, wrong output.
Skill by OpenDigitalProductFactory
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/opendigitalproductfactory-dpf-systematic-debugging
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/dpf-systematic-debugging
Tools it pre-approves 8
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
BashGrepGlobmcp__dpf__search_code_graphmcp__dpf__get_build_progress_visibilitymcp__dpf__get_build_sandbox_statemcp__dpf__diagnose_sandboxmcp__dpf__list_work_capsules
What's inside
- Skill name
dpf-systematic-debugging- Description
- Use when a DPF symptom needs a root cause — a failing build, a wedged runtime, a stuck job, wrong output.
- License
- Apache-2.0
- Allowed tools
- Bash, Grep, Glob, mcp__dpf__search_code_graph, mcp__dpf__get_build_progress_visibility, mcp__dpf__get_build_sandbox_state, mcp__dpf__diagnose_sandbox, mcp__dpf__list_work_capsules
- Instructions
- 63 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves any shell command
Files (2)
- SKILL.md
- recovery-routing.md · references/
SKILL.md (first lines)
# DPF Systematic Debugging Hypothesis-and-isolate is assumed, not taught. In DPF the failure modes are substrate- and concurrency-shaped rather than logic-shaped, so the generic loop misleads more often than it helps. What follows is only the DPF-specific gating. ## Route platform or gate failures first For a broken upgrade, unavailable MCP/portal/CI, permission denial or occupied break-fix lane, read [recovery routing](references/recovery-routing.md) before the normal steps below. A recovery route preserves authorization and reports unrun gates honestly. Ordinary queue contention still waits. ## When to use - A build, job, or runtime is failing, stuck, or wedged and you need the root cause. - Output is wrong and you are about to name a cause. - A shared resource (portal, sandbox, queue, DB) appears "broken." Skip it when you already have verified evidence of the cause, or when the "cause" is hypothetical with no observed symptom. ## Gate 1 — Live evidence before any hypothesis **Hard gate: [`dpf-evidence-before-diagnosis`](../dpf-evidence-before-diagnosis/SKILL.md).** A log line saying "X failed because Y" is a hypothesis written by code that can itself be wrong — not a finding. Query the live state that would confirm or refute it: - Live Postgres rows (`docker exec dpf-postgres-1 psql -U dpf -d dpf -c "…"`) — the actual record, not the log's claim about it. - MCP status/tool signals (`tools/list`, build and sandbox status tools) — `check-tool-signals-first`. - Container logs (`docker logs <svc>`), plus the relevant status route or run table (`QuiescenceRun`, `SelfUpgradeRun`, `FeatureBuild.buildExecState`). - `get_build_sandbox_state`, `diagnose_sandbox`. - `~/.dpf/install-state.json` and the deployed build identity when the symptom is install- or version-shaped. Write down observed facts — numbers, timestamps, statuses — separately from any suggested cause. > **Substrate anchor:** runtime-bound reproduction (running a service, testing against a live DB, exercising a build flow) belongs in the shared local-CI convergence sandbox, not a worktree. Kernel principle `worktree-is-source-control-not-runtime`; [AGENTS.md §3](../../../../AGENTS.md). ## Gate 2 — Concurrency and substrate, before declaring it broken 1. **Peer-session check (`propose-acknowledge-reassign`).** Before concluding a shared substrate is broken, check whether another session, worktree, or agent is already on it: `list_work_capsules`, `git log` for very recent commits, running build/compose processes, other worktrees. A peer may have the fix in flight, and re-fixing collides. 2. **Substrate verification ([`dpf-verify-substrate-first`](../dpf-verify-substrate-first/SKILL.md)).** Before "the component is missing," sweep `search_code_graph` plus a main-branch check. It usually exists; the wiring or the version is what is off. ## Gate 3 — Fix, then verify functionally **Hard gate: `structural-verification-is-not-functional`.** A fix that compiles, type-checks, or lints is **not verified**. The symptom is fixed when the running thing behaves: the build goes green, the job completes, the row reaches the expected status, the endpoint returns the right value. A green typecheck on a wedged runtime is not a fix. ## Worked example (2026-05-30 — stuck quiescence drain) The portal refused all MCP writes with `portal_quiescing`. Tempting diagnosis: "the quiescence logic is broken, go fix it." - **Gate 1:** `QuiescenceRun` showed `status=draining`, `enteredStateAt.draining` 11+ minutes against a `budgetMs` of 300000, and `lastHeartbeatAt=null`. Observed fact: the coordinator never ran a single drain-tick. That refuted "logic bug in the wait loop" and pointed at "the coordinator never resumed." - **Gate 2:** `ps` and `git log` showed a peer session had **already committed the fix** (`bcaa30a8`) and was rebuilding. Re-fixing would have collided in the shared tree. - **Gate 3:** recovery was not "the code compiles" — it was the portal restarting on the fixed image and `quiescence-state` returning `level: normal` with MCP accepting a write. Without gates 1 and 2, the obvious-but-wrong move — rewriting the quiescence logic — would have wasted effort and stepped on a peer. ## Guardrails - **Never adopt a log's suggested cause as a finding.** Confirm against live state. - **Never declare shared substrate broken without the peer check.** - **Never report "fixed" on a structural pass.** Functional evidence or it is not fixed. - **Keep observed facts separate from inferred causes** in notes and in the report. ## See also - Predecessor gate: [`dpf-evidence-before-diagnosis`](../dpf-evidence-before-diagnosis/SKILL.md) - Composes with: [`dpf-verify-substrate-first`](../dpf-verify-substrate-first/SKILL.md) - Kernel: `evidence-before-diagnosis`, `structural-verification-is-not-functional`, `check-tool-signals-first`, `propose-acknowledge-reassign`.
From OpenDigitalProductFactory/opendigitalproductfactory, Apache-2.0.
More from OpenDigitalProductFactory/opendigitalproductfactory
- 0.638score
dpf-sysml-architecture-substrate
OpenDigitalProductFactory
Use when DPF platform work needs SysML v2 systems-architecture reasoning — EA substrate, requirements, interfaces, allocations, verification cases, or…
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-elicit-tacit-knowledge
OpenDigitalProductFactory
Use when durable DPF knowledge lives only in a human's head — a decision rationale, the why behind a choice, a profession technique, domain context a build…
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-evidence-before-diagnosis
OpenDigitalProductFactory
Use when about to claim a cause for a DPF symptom without having checked the live DB, status fields, logs, or runtime state.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-file-backlog-item
OpenDigitalProductFactory
Use when new DPF work needs to enter the backlog — a feature gap, bug, tool, skill or doc gap, automated detection, or user request.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
portal-navigation-audit
OpenDigitalProductFactory
Audit and improve portal navigation, route organization, and page hierarchy for complex web apps.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-capture-kernel-gap
OpenDigitalProductFactory
Use when the DPF kernel cannot answer a decision because principles, ownership, evidence, or domain context are missing.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-brainstorming
OpenDigitalProductFactory
Use when an open DPF problem needs candidate approaches before a decision — authoring a spec, scoping a feature, choosing a design.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-drive-portal-and-observe-build
OpenDigitalProductFactory
Use when driving the live DPF portal through the browser — messaging a coworker, clicking through build gates, filling an admin form — or when establishing…
SkillAFreshness: A★ 15Claude Code +9 - 0.637score
dpf-compare-options
OpenDigitalProductFactory
Use when DPF decision context is gathered and two to four options need WWMD/kernel scoring.
SkillAFreshness: A★ 15Claude Code +9 - 0.637score
dpf-decision-via-kernel
OpenDigitalProductFactory
Use when an open DPF question has two or more architecturally-distinct options that need kernel scoring.
SkillAFreshness: A★ 15Claude Code +9 - 0.637score
dpf-external-evidence-handoff
OpenDigitalProductFactory
Use when an external contributor needs to hand branch, file, test, and evidence context back to Build Studio.
SkillAFreshness: A★ 15Claude Code +9 - 0.637score
dpf-add-archetype
OpenDigitalProductFactory
Use when adding a new business archetype, industry, or vertical the DPF storefront taxonomy does not yet cover.
SkillAFreshness: A★ 15Claude Code +9
Signals
- Stars
- 15
- Forks
- 4
- Open issues
- 40
- Last commit (this folder)
- Oct 12, 2026 (17 days ago)
- Last release
- Oct 24, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from OpenDigitalProductFactory
- 0.638score
dpf-elicit-tacit-knowledge
OpenDigitalProductFactory
Use when durable DPF knowledge lives only in a human's head — a decision rationale, the why behind a choice, a profession technique, domain context a build…
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-capture-kernel-gap
OpenDigitalProductFactory
Use when the DPF kernel cannot answer a decision because principles, ownership, evidence, or domain context are missing.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-brainstorming
OpenDigitalProductFactory
Use when an open DPF problem needs candidate approaches before a decision — authoring a spec, scoping a feature, choosing a design.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-drive-portal-and-observe-build
OpenDigitalProductFactory
Use when driving the live DPF portal through the browser — messaging a coworker, clicking through build gates, filling an admin form — or when establishing…
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
portal-navigation-audit
OpenDigitalProductFactory
Audit and improve portal navigation, route organization, and page hierarchy for complex web apps.
SkillAFreshness: A★ 15Claude Code +9 - 0.638score
dpf-evidence-before-diagnosis
OpenDigitalProductFactory
Use when about to claim a cause for a DPF symptom without having checked the live DB, status fields, logs, or runtime state.
SkillAFreshness: A★ 15Claude Code +9
Cite this page
dpf-systematic-debugging skill. Agent Mart. https://agentmart.dev/skills/opendigitalproductfactory-dpf-systematic-debugging (last updated 2026-10-24)