with one click
devflow-core
// Use whenever working in a DevFlow-managed project (CLAUDE.md contains devflow_init). Explains the flow-state machine, init requirements, and error recovery.
// Use whenever working in a DevFlow-managed project (CLAUDE.md contains devflow_init). Explains the flow-state machine, init requirements, and error recovery.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | devflow-core |
| description | Use whenever working in a DevFlow-managed project (CLAUDE.md contains devflow_init). Explains the flow-state machine, init requirements, and error recovery. |
This project uses DevFlow for structured AI development. Every change flows through a state machine enforced by the MCP server.
idea ā planning ā approval ā ready ā in_progress ā review ā done
approval and review are wait states ā user must act in DevFlow UIready and done are auto states ā transitioned automaticallyBefore any tool call other than flow_list, flow_create, or devflow_status, you MUST call:
devflow_init({ flowId: "..." })
Without an active session, all MCP tools are blocked with a 403.
Use /devflow-start <DF-XXX> as a shortcut.
When you successfully call flow_update and the state changes (e.g. approval ā ready), the MCP server's response tells you to re-call devflow_init. You must do this ā the server's enforcement context resets on each state.
.devflow-active fileThe MCP server writes .devflow-active in the project root when devflow_init succeeds. Hooks use it to detect the current flow. Never edit it manually.
/devflow-next, follow allowedActions.review transitions: agentSummary + testingInstructions are required.devflow_init again to refresh the session lease.Every devflow_init response includes a gitEnabled boolean (from git_settings.enabled). Behave accordingly:
gitEnabled: true ā Project follows a git workflow. You MUST create branches, commit with Gitmoji, report branchName + commits[] via flow_update, and ensure a merged PR before review ā done.gitEnabled: false ā Project does not enforce git. Do not run git checkout -b, do not produce commits, do not call flow_update({ commits: [...] }), do not report a PR URL. Just edit files, run tests, and submit agentSummary + testingInstructions for review.Default to OFF when in doubt ā Beta-phase projects often have git off.
Every devflow_init response also includes allowSelfApproval (from project_configs.allow_agent_self_approval).
allowSelfApproval: false (default) ā planning ā approval/ready and review ā done are human-only. When you hit a 403 with gate.policy === 'human_only', the response carries gate.userMessage. Show that message verbatim to the user and stop. Don't retry.allowSelfApproval: true ā You may transition both gates yourself by emitting discipline-tokens via devflow_token_emit for every skill listed in gate.requiredSkills, then calling flow_update({ currentState, selfApproved: true, disciplineTokens: [...] }).Hardcoded required skills (DF-302):
approval step: devflow-collision-acknowledged, devflow-pattern-reuse, devflow-tddtesting step: devflow-verification-gate, devflow-adr-complianceWhen you call flow_update to transition state and the response is 403 with gate.reason === 'missing_documentation', the flow text mentions architectural topics (auth, billing, cache, api, etc) that have no ADR / Pattern / Runbook yet. The transition is blocked until each is resolved.
The 403 carries gate.agentInstructions ā read it. Standard playbook:
gate.topics tells you exactly which topics need resolution.knowledge_check_resolve({
flowId, topic, resolutionType: 'dismiss',
reason: '<ā„10 chars explaining why this is a passing mention, not a real architectural concern>'
})
'adr' / 'pattern' / 'runbook' (link to an existing doc-page via entityType+entityId) or 'intent_defer' (with horizon 'next-quarter' | 'later').flow_update transition.Important state restriction: knowledge_check_resolve is only allowed in planning or in_progress. If the gate fires in review/approval, you must:
flow_update({ currentState: 'in_progress' }) (or planning) firstflow_update({ currentState: 'review', agentSummary, testingInstructions }) again to re-enter reviewProactive habit: Before every flow_update to approval or done, run knowledge_check_flow(flowId) and resolve any banner topics. Catching them early avoids the round-trip.
For deeper instructions on a specific state, use the matching skill:
devflow-planningdevflow-executingdevflow-reviewingWhen listing or summarizing flows for the user, use the devflow-flow-display skill ā it pins the Markdown-table format with ā for own flows, separated lock-status, and hidden done-flows by default. Don't roll your own flow-list format.