@jakkrichm/create-nexus-devflow 2.2.2 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/create-nexus-devflow.js +9 -1
- package/dist/bin/create-nexus-devflow.js.map +1 -1
- package/dist/lib/command-catalog.js +1 -1
- package/dist/lib/command-catalog.js.map +1 -1
- package/dist/lib/dashboard-page.d.ts +1 -1
- package/dist/lib/dashboard-page.js +42 -20
- package/dist/lib/dashboard-page.js.map +1 -1
- package/dist/lib/dashboard-snapshot.js +16 -12
- package/dist/lib/dashboard-snapshot.js.map +1 -1
- package/dist/lib/dashboard.js +10 -1
- package/dist/lib/dashboard.js.map +1 -1
- package/dist/lib/doctor.js +1 -1
- package/dist/lib/gatekeeper.d.ts +4 -0
- package/dist/lib/gatekeeper.js +2 -2
- package/dist/lib/gatekeeper.js.map +1 -1
- package/dist/lib/git-status.d.ts +10 -2
- package/dist/lib/git-status.js +57 -29
- package/dist/lib/git-status.js.map +1 -1
- package/dist/lib/swarm-orchestrator.d.ts +4 -1
- package/dist/lib/swarm-orchestrator.js +2 -2
- package/dist/lib/swarm-orchestrator.js.map +1 -1
- package/dist/lib/version-check.js +1 -1
- package/dist/lib/workflow-state.js +19 -32
- package/dist/lib/workflow-state.js.map +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/complete/SKILL.md +47 -36
- package/template/.agents/skills/devflow/SKILL.md +51 -79
- package/template/.claude/skills/complete/SKILL.md +47 -36
- package/template/.claude/skills/devflow/SKILL.md +51 -79
- package/template/AGENTS.md +21 -30
- package/template/devflow/build-plan.md +9 -0
- package/template/devflow/context/ai-interaction.md +38 -39
- package/template/devflow/context/findings.md +8 -11
- package/template/devflow/context/glossary.md +31 -0
- package/template/devflow/reference/build-plan-template.md +65 -0
- package/template/devflow/reference/feature-spec-template.md +110 -0
- package/template/devflow/reference/project-plan-template.md +128 -0
- package/template/devflow/reference/running-id-contract.md +12 -11
- package/template/.agents/skills/10-define/SKILL.md +0 -54
- package/template/.agents/skills/20-spec/SKILL.md +0 -155
- package/template/.agents/skills/30-plan/SKILL.md +0 -226
- package/template/.agents/skills/40-execute/SKILL.md +0 -158
- package/template/.agents/skills/50-verify/SKILL.md +0 -62
- package/template/.agents/skills/60-report/SKILL.md +0 -57
- package/template/.agents/skills/70-deliver/SKILL.md +0 -72
- package/template/.claude/skills/10-define/SKILL.md +0 -54
- package/template/.claude/skills/20-spec/SKILL.md +0 -155
- package/template/.claude/skills/30-plan/SKILL.md +0 -226
- package/template/.claude/skills/40-execute/SKILL.md +0 -158
- package/template/.claude/skills/50-verify/SKILL.md +0 -62
- package/template/.claude/skills/60-report/SKILL.md +0 -57
- package/template/.claude/skills/70-deliver/SKILL.md +0 -72
|
@@ -8,7 +8,7 @@ async function checkPackageVersion(options) {
|
|
|
8
8
|
return cached.value;
|
|
9
9
|
const checkedAt = new Date(now()).toISOString();
|
|
10
10
|
const controller = new AbortController();
|
|
11
|
-
const timeout = setTimeout(() => controller.abort(), options.timeoutMs ??
|
|
11
|
+
const timeout = setTimeout(() => controller.abort(), options.timeoutMs ?? 1000);
|
|
12
12
|
let value;
|
|
13
13
|
try {
|
|
14
14
|
const response = await (options.fetchImpl || fetch)(`https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`, { headers: { accept: "application/json" }, signal: controller.signal });
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
const FAST_STAGES = ["feature-fix", "implement", "check", "complete"];
|
|
4
|
-
const
|
|
5
|
-
"discovery",
|
|
6
|
-
"10-define",
|
|
7
|
-
"20-spec",
|
|
8
|
-
"30-plan",
|
|
9
|
-
"40-execute",
|
|
10
|
-
"50-verify",
|
|
11
|
-
"60-report",
|
|
12
|
-
"70-deliver"
|
|
13
|
-
];
|
|
4
|
+
const PREFLIGHT_STAGES = ["idea", "grill", "brainstorm", "discovery"];
|
|
14
5
|
async function readWorkflowState(projectRoot, currentWork) {
|
|
15
6
|
const stagePath = path.join(projectRoot, "devflow", "context", "current-stage.md");
|
|
16
7
|
let markdown = "";
|
|
@@ -30,35 +21,30 @@ function parseWorkflowState(markdown, currentWork) {
|
|
|
30
21
|
const rawStage = nullableField(markdown, "Current Stage");
|
|
31
22
|
const lastCompletedRun = nullableField(markdown, "Last Completed Run");
|
|
32
23
|
const lastUpdated = nullableField(markdown, "Last Updated");
|
|
33
|
-
const
|
|
24
|
+
const preflightStage = normalizePreflightStage(rawStage);
|
|
34
25
|
const fastStageFromMarkdown = normalizeFastStage(rawStage);
|
|
26
|
+
const isExplicitIdle = explicitTrack === "idle" || explicitTrack === "none";
|
|
27
|
+
const isExplicitFast = Boolean(explicitTrack?.includes("fast") || explicitTrack?.includes("living"));
|
|
28
|
+
const isExplicitDeep = Boolean(explicitTrack?.includes("deep") || explicitTrack?.includes("preflight") || explicitTrack?.includes("discovery"));
|
|
35
29
|
let track = "idle";
|
|
36
30
|
let currentStage = null;
|
|
37
|
-
const isIdle =
|
|
31
|
+
const isIdle = isExplicitIdle ||
|
|
38
32
|
(rawStage === null && currentWork.state === "idle" && !activeRunId && !activeDiscoveryId);
|
|
39
33
|
if (isIdle) {
|
|
40
34
|
track = "idle";
|
|
41
35
|
currentStage = null;
|
|
42
36
|
}
|
|
43
|
-
else if (
|
|
44
|
-
track = "deep";
|
|
45
|
-
currentStage = deepStage || (activeDiscoveryId ? "discovery" : "10-define");
|
|
46
|
-
}
|
|
47
|
-
else if (explicitTrack === "fast") {
|
|
37
|
+
else if (isExplicitFast || (activeRunId && currentWork.state === "active")) {
|
|
48
38
|
track = "fast";
|
|
49
39
|
currentStage = fastStageFromMarkdown || fastStage(currentWork);
|
|
50
40
|
}
|
|
51
|
-
else if (
|
|
52
|
-
track = "deep";
|
|
53
|
-
currentStage = deepStage;
|
|
54
|
-
}
|
|
55
|
-
else if (activeDiscoveryId) {
|
|
41
|
+
else if (isExplicitDeep || activeDiscoveryId) {
|
|
56
42
|
track = "deep";
|
|
57
|
-
currentStage = "discovery";
|
|
43
|
+
currentStage = preflightStage || "discovery";
|
|
58
44
|
}
|
|
59
45
|
else if (currentWork.state === "active") {
|
|
60
|
-
track =
|
|
61
|
-
currentStage =
|
|
46
|
+
track = "fast";
|
|
47
|
+
currentStage = fastStageFromMarkdown || fastStage(currentWork);
|
|
62
48
|
}
|
|
63
49
|
return {
|
|
64
50
|
track,
|
|
@@ -68,7 +54,7 @@ function parseWorkflowState(markdown, currentWork) {
|
|
|
68
54
|
lastCompletedRun,
|
|
69
55
|
lastUpdated,
|
|
70
56
|
fast: buildPipeline(FAST_STAGES, track === "fast" ? currentStage : null),
|
|
71
|
-
deep: buildPipeline(
|
|
57
|
+
deep: buildPipeline(PREFLIGHT_STAGES, track === "deep" ? currentStage : null)
|
|
72
58
|
};
|
|
73
59
|
}
|
|
74
60
|
function nullableField(markdown, label) {
|
|
@@ -79,15 +65,16 @@ function nullableField(markdown, label) {
|
|
|
79
65
|
? null
|
|
80
66
|
: value;
|
|
81
67
|
}
|
|
82
|
-
function
|
|
68
|
+
function normalizePreflightStage(value) {
|
|
83
69
|
if (!value)
|
|
84
70
|
return null;
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
const match = value.match(/\b(idea|grill|brainstorm|discovery|explore)\b/i)?.[1];
|
|
72
|
+
if (!match)
|
|
73
|
+
return null;
|
|
74
|
+
const raw = match.toLowerCase();
|
|
75
|
+
if (raw === "explore")
|
|
89
76
|
return "discovery";
|
|
90
|
-
return raw
|
|
77
|
+
return raw;
|
|
91
78
|
}
|
|
92
79
|
function normalizeFastStage(value) {
|
|
93
80
|
if (!value)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../../lib/workflow-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAyB7B,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAC/E,MAAM,
|
|
1
|
+
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../../lib/workflow-state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: complete
|
|
3
|
-
description: "[devflow][F] Wrap up a finished feature, fix, or rollback. Runs a final safety pass, archives its spec to devflow/history/features/, devflow/history/fixes/, or devflow/history/rollbacks/, updates the build plan for features and rollbacks, resets devflow/context/current-feature.md to its stub, makes
|
|
3
|
+
description: "[devflow][F] Wrap up a finished feature, fix, or rollback. Runs a final safety pass, archives its spec to devflow/history/features/, devflow/history/fixes/, or devflow/history/rollbacks/, updates the build plan for features and rollbacks, resets devflow/context/current-feature.md to its stub, and makes the work commit. Enforces a mandatory user gate: asks whether to squash-merge to main/master OR pull latest main/master into the feature/dev branch and push to remote for Merge Request (MR / PR) creation. Never merges into main/master without explicit user instruction."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# complete - log the finished work, make the work commit, and
|
|
6
|
+
# complete - log the finished work, make the work commit, and deliver
|
|
7
7
|
|
|
8
8
|
Where this sits in the workflow:
|
|
9
9
|
|
|
10
10
|
/feature, /fix, or /rollback -> /implement -> [complete] -> next
|
|
11
|
-
(the spec) (build it) (commit +
|
|
11
|
+
(the spec) (build it) (commit + delivery gate)
|
|
12
12
|
|
|
13
13
|
`/implement` built the feature, fix, or rollback on its branch, with optional per-step commit
|
|
14
14
|
checkpoints. This skill closes it out: it logs the work, makes the single
|
|
15
|
-
work-level commit, and
|
|
15
|
+
work-level commit, and guides the delivery through a **Mandatory User Delivery Gate**. Run it only when the work is done,
|
|
16
16
|
reviewed, and the documented `Verify` command, or the fallback build and tests,
|
|
17
17
|
passes.
|
|
18
18
|
|
|
@@ -22,7 +22,7 @@ Confirm the work is actually finished: `devflow/context/current-feature.md`
|
|
|
22
22
|
holds a real spec, its steps are built on a branch, and `Verify`, or the fallback
|
|
23
23
|
build and tests, passes. If any of the
|
|
24
24
|
spec's done-whens are behavioral, `/check` should have proven them against the
|
|
25
|
-
running app first - don't merge on an unverified claim. Uncommitted step work is
|
|
25
|
+
running app first - don't merge or complete on an unverified claim. Uncommitted step work is
|
|
26
26
|
expected (per-step checkpoints are optional); this skill commits it. Don't require
|
|
27
27
|
the steps to be pre-committed.
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ the steps to be pre-committed.
|
|
|
30
30
|
|
|
31
31
|
Before logging or committing, run a short safety pass and report blockers only:
|
|
32
32
|
|
|
33
|
-
- active spec exists and the work is not being completed from `main` or `master`
|
|
33
|
+
- active spec exists and the work is not being completed directly from `main` or `master`
|
|
34
34
|
- changed files are tied to the active spec, with no unrelated dirty work mixed
|
|
35
35
|
in (a dirty `devflow/context/findings.md` is expected, since `/audit` writes it)
|
|
36
36
|
- the exact `Verify` command from `AGENTS.md` passed in this session, when one is
|
|
@@ -107,25 +107,47 @@ into the app - delete the `prototypes/` folder now. The tokens live in the real
|
|
|
107
107
|
stylesheet and the HTML mockups were always throwaway; fold the deletion into this
|
|
108
108
|
feature's commit. Skip this if the feature didn't consume prototypes.
|
|
109
109
|
|
|
110
|
-
## Step 2 - make the work commit
|
|
110
|
+
## Step 2 - make the work commit on feature branch
|
|
111
111
|
|
|
112
112
|
Stage everything on the branch (any uncommitted step work plus the Step 1 logging
|
|
113
|
-
changes) and make one conventional work commit (for example `feat: <feature>`,
|
|
113
|
+
changes) and make one conventional work commit on the active branch (for example `feat: <feature>`,
|
|
114
114
|
`fix: <name>`, or `revert: roll back <feature>`). `Verify`, or the fallback build
|
|
115
115
|
and tests, must pass first.
|
|
116
116
|
|
|
117
|
-
## Step 3 -
|
|
117
|
+
## Step 3 - Mandatory Delivery Gate (Ask User First)
|
|
118
|
+
|
|
119
|
+
> [!IMPORTANT]
|
|
120
|
+
> **MANDATORY USER SELECTION**: In real-world engineering teams, developers often do NOT have direct merge/push access to `main` or `master` (protected branches).
|
|
121
|
+
> Therefore, you **MUST STOP AND ASK** the user to choose their desired delivery flow. **NEVER automatically merge into `main` or `master` without explicit user choice.**
|
|
122
|
+
|
|
123
|
+
Present the user with two clear delivery options:
|
|
124
|
+
|
|
125
|
+
### 🔀 Option 1: Team MR / PR Flow (Pull latest main/master & Push dev branch) [Default for Teams]
|
|
126
|
+
- **When to choose**: When working in a team where code reviews happen via GitLab Merge Request (MR) or GitHub Pull Request (PR), or where developers lack direct write access to protected `main`/`master` branches.
|
|
127
|
+
- **Execution Actions**:
|
|
128
|
+
1. Detect default base branch name (`main` or `master`).
|
|
129
|
+
2. Run `git pull origin <main/master>` (or `git fetch origin <main/master> && git merge origin/<main/master>`) to bring the latest upstream changes into the active feature/dev branch.
|
|
130
|
+
3. If merge conflicts occur, highlight them clearly and help the user resolve them.
|
|
131
|
+
4. Run `Verify` (or build & tests) to ensure integrity after the merge.
|
|
132
|
+
5. Run `git push origin <current-feature-branch>` to push the up-to-date branch to the remote repository.
|
|
133
|
+
6. Stop and inform the user that the branch is synchronized and pushed, ready for them to open a Merge Request (MR / PR) on GitLab/GitHub.
|
|
134
|
+
7. **Do NOT merge into local `main`/`master` and do NOT delete the branch.**
|
|
135
|
+
|
|
136
|
+
### 🔀 Option 2: Direct Local Squash-Merge (Solo / Direct Access Mode)
|
|
137
|
+
- **When to choose**: Only when the user explicitly instructs that they want to merge directly into `main` or `master` locally now (e.g. solo projects or Tech Leads with merge privileges).
|
|
138
|
+
- **Execution Actions**:
|
|
139
|
+
1. Switch to `main` or `master`: `git checkout <main/master>`.
|
|
140
|
+
2. Squash-merge the branch: `git merge --squash <feature-branch>`.
|
|
141
|
+
3. Commit the squash-merge.
|
|
142
|
+
4. Delete the local feature branch only with the user's explicit consent.
|
|
143
|
+
5. **Stop and ask separately** before pushing local `main`/`master` to remote upstream. The merge approval does NOT count as push approval.
|
|
144
|
+
6. Run `git push origin <main/master>` only after separate explicit confirmation.
|
|
118
145
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
2. Delete the branch after a clean merge.
|
|
123
|
-
3. Stop and ask whether to push local `main` to its upstream. The merge approval
|
|
124
|
-
does not count as push approval.
|
|
125
|
-
4. Push main only after a separate explicit yes to push main in the current chat.
|
|
126
|
-
If the repo has no remote or upstream, say so instead of guessing.
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Step 4 - Finish & Try Path
|
|
127
149
|
|
|
128
|
-
|
|
150
|
+
Point the user at `/feature`, `/fix`, or `/rollback` for the next task.
|
|
129
151
|
|
|
130
152
|
Finish with a concise **How to try it** note for the completed work. For a
|
|
131
153
|
rollback, explain how to confirm the removed behavior is gone and name one
|
|
@@ -135,26 +157,15 @@ that command can read the archived feature after `current-feature.md` is reset.
|
|
|
135
157
|
|
|
136
158
|
## Rules
|
|
137
159
|
|
|
160
|
+
- **Mandatory User Confirmation Gate**: Always ask before choosing between Team MR/PR Push vs Direct Squash-Merge.
|
|
161
|
+
- **Never auto-merge into main/master**: The decision to merge into `main` or `master` belongs strictly to the user.
|
|
138
162
|
- The work item is the unit of history: one squashed feature, fix, or rollback
|
|
139
|
-
commit
|
|
163
|
+
commit, even if the branch carried several checkpoint commits.
|
|
140
164
|
- A rollback preserves the original feature archive and adds a separate rollback
|
|
141
165
|
archive. Never rewrite history to make the feature look as if it never existed.
|
|
142
|
-
- Don't merge unfinished or failing work. The documented `Verify` command, or
|
|
166
|
+
- Don't merge or push unfinished or failing work. The documented `Verify` command, or
|
|
143
167
|
the fallback build and tests, must pass first.
|
|
144
|
-
- Never merge while a P0 or P1 finding is `open` or `fixed` in the ledger.
|
|
145
|
-
|
|
146
|
-
explicit decision, with their reason) or `invalid` (only from re-examination
|
|
147
|
-
evidence or the user's explicit call); both travel into the archive, never a
|
|
148
|
-
silent drop.
|
|
149
|
-
- Merging and pushing are the user's calls: get an explicit yes for the merge,
|
|
150
|
-
then ask whether to push main. Do not treat merge approval, `/complete`, or
|
|
151
|
-
"looks good" as permission to push.
|
|
152
|
-
- Push main only after a separate explicit yes to push main in the current chat.
|
|
168
|
+
- Never merge or push while a P0 or P1 finding is `open` or `fixed` in the ledger.
|
|
169
|
+
- Pushing to remote is always explicit: confirm before running `git push`.
|
|
153
170
|
- One item per completion. If a parent feature still has unchecked sub-features,
|
|
154
|
-
leave the parent unchecked.
|
|
155
|
-
|
|
156
|
-
## Formatting
|
|
157
|
-
|
|
158
|
-
Format the output to match the project's conventions in
|
|
159
|
-
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
160
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
171
|
+
leave the parent unchecked.
|
|
@@ -5,26 +5,19 @@ description: "[devflow][B] Flagship interactive guide, state inspector, and inte
|
|
|
5
5
|
|
|
6
6
|
# devflow - Interactive Workflow Guide & Intent Router for Nexus-DevFlow
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- [F] Fast-Track only
|
|
10
|
-
- [D] Deep-Track only
|
|
11
|
-
- [B] Available in both tracks (Track-agnostic)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Use this skill to guide the user on what to do next, inspect current workspace state, map their natural language intent to the right Nexus-DevFlow track (Fast-Track or Deep-Track) or companion command, or display a sitemap of available DevFlow skills.
|
|
8
|
+
Use this skill to guide the user on what to do next, inspect current workspace state, map their natural language intent to the matching Nexus-DevFlow stage or companion command, or display a sitemap of available DevFlow skills.
|
|
15
9
|
|
|
16
10
|
## Input
|
|
17
11
|
|
|
18
|
-
- **No argument (`devflow`,
|
|
19
|
-
- **With user request (`devflow "<request>"`)**: Classify the user's intent and guide them to the matching DevFlow workflow
|
|
12
|
+
- **No argument (`devflow`, `/devflow`, `$devflow`, or `status`)**: Inspect current workspace state (active run in `devflow/context/current-stage.md`, active living spec in `devflow/context/current-feature.md`, active discovery in `devflow/discoveries/`, pending ideas in `devflow/ideas.md`, open findings in `devflow/context/findings.md`, and project overview in `devflow/context/project-overview.md`) and recommend the exact next action.
|
|
13
|
+
- **With user request (`devflow "<request>"`)**: Classify the user's intent and guide them to the matching DevFlow workflow stage or companion command path.
|
|
20
14
|
|
|
21
|
-
##
|
|
15
|
+
## The Unified Living Spec Architecture (DevFlow 2.5.0)
|
|
22
16
|
|
|
23
|
-
Nexus-DevFlow
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
*Driven by modular separate stage files for large, high-stakes architectural epics and multi-agent coordination.*
|
|
17
|
+
Nexus-DevFlow uses a **Single Unified Living Spec Model**:
|
|
18
|
+
- **The 4-Stage Lifecycle**: `/feature` (or `/fix`) ➔ `/implement` ➔ `/check` ➔ `/complete`
|
|
19
|
+
- Driven by a **Single Living Spec (`devflow/context/current-feature.md`)** that integrates architectural depth (Define, Spec, Plan, Execution Log, Multi-Lane QA, and Release Digest) into one clear living document.
|
|
20
|
+
- **Pre-Flight Inception Engine**: Companion skills (`/discovery`, `/idea`, `/grill`, `/brainstorm`) feed directly into `/feature`.
|
|
28
21
|
|
|
29
22
|
---
|
|
30
23
|
|
|
@@ -33,93 +26,72 @@ Nexus-DevFlow supports two seamless workflow tracks:
|
|
|
33
26
|
When invoked without an argument (or when determining the next step), inspect:
|
|
34
27
|
|
|
35
28
|
1. **Project Setup Baseline**: Read `devflow/context/project-overview.md` and `devflow/context/coding-standards.md`. If empty or default placeholders, recommend `onboard` (for fresh projects) or `adopt` (for existing codebases).
|
|
36
|
-
2. **Active Delivery Run**: Read `devflow/context/current-stage.md` and
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- If verification evidence passed -> Recommend `/complete` (or `complete {RUNNING_ID}`).
|
|
41
|
-
- **If Deep-Track (numbered stage files present)**:
|
|
42
|
-
- If at `10-define.md` -> Recommend `20-spec {RUNNING_ID}`.
|
|
43
|
-
- If at `20-spec.md` -> Recommend `30-plan {RUNNING_ID}`.
|
|
44
|
-
- If at `30-plan.md` -> Recommend `40-execute {RUNNING_ID}`.
|
|
45
|
-
- If at `40-execute.md` with all tasks done -> Recommend `50-verify {RUNNING_ID}`.
|
|
46
|
-
- If passed `50-verify.md` -> Recommend `60-report {RUNNING_ID}` then `70-deliver {RUNNING_ID}`.
|
|
29
|
+
2. **Active Delivery Run**: Read `devflow/context/current-stage.md` and `devflow/context/current-feature.md`.
|
|
30
|
+
- If `current-feature.md` has incomplete checklist tasks (`- [ ]`) -> Recommend `/implement`.
|
|
31
|
+
- If all tasks are completed (`- [x]`) but no passing verification evidence in Section 5 -> Recommend `/check`.
|
|
32
|
+
- If verification evidence passed in Section 5 -> Recommend `/complete`.
|
|
47
33
|
3. **Active Discovery**: Check `devflow/discoveries/` for open discovery notes.
|
|
48
|
-
4. **Pending Ideas Inbox**: Check `devflow/ideas.md`. If items exist under `## 📌 Pending Ideas`, summarize them in a **💡 Pending Ideas (Inbox)** list with their IDs (`[IDEA-xxx]`), feasibility, and mention that they can be started with `/
|
|
34
|
+
4. **Pending Ideas Inbox**: Check `devflow/ideas.md`. If items exist under `## 📌 Pending Ideas`, summarize them in a **💡 Pending Ideas (Inbox)** list with their IDs (`[IDEA-xxx]`), feasibility, and mention that they can be started with `/feature IDEA-xxx` or `/discovery IDEA-xxx`.
|
|
49
35
|
5. **Audit Findings Ledger**: Check `devflow/context/findings.md` for open high-severity findings.
|
|
50
36
|
|
|
51
37
|
### Default State Recommendations
|
|
52
|
-
-
|
|
38
|
+
- If no run is active and user wants to start a feature -> Recommend `/feature <name>`.
|
|
53
39
|
- If no run is active and user wants to fix a bug -> Recommend `/fix <bug>`.
|
|
54
|
-
- If no run is active and user has pending ideas in `devflow/ideas.md` -> Highlight `/
|
|
55
|
-
- If no run is active and user wants deep architectural exploration -> Recommend
|
|
40
|
+
- If no run is active and user has pending ideas in `devflow/ideas.md` -> Highlight `/feature IDEA-xxx` or `/discovery IDEA-xxx`.
|
|
41
|
+
- If no run is active and user wants deep architectural exploration -> Recommend `/discovery`.
|
|
56
42
|
- If user asks to check system health -> Recommend `doctor`.
|
|
57
43
|
|
|
58
44
|
---
|
|
59
45
|
|
|
60
46
|
## Intent Classification & Skill Routing
|
|
61
47
|
|
|
62
|
-
| User Intent / Request Type | Recommended Skill | Normal Name / Alias |
|
|
48
|
+
| User Intent / Request Type | Recommended Skill | Normal Name / Alias | Lifecycle Path |
|
|
63
49
|
| :--- | :--- | :--- | :--- |
|
|
64
|
-
| **"Spec new feature /
|
|
65
|
-
| **"Quick bugfix / ad-hoc change"** | `
|
|
50
|
+
| **"Spec new feature / living spec"** | `feature` | `/feature` / `/spec` | **Unified**: `/feature` -> `/implement` -> `/check` -> `/complete` |
|
|
51
|
+
| **"Quick bugfix / ad-hoc change"** | `fix` | `/fix` | **Unified**: `/fix` -> `/implement` -> `/check` -> `/complete` |
|
|
66
52
|
| **"Capture quick idea / thought"** | `idea` | `/idea` | **Companion**: Enriches & saves to `devflow/ideas.md` |
|
|
67
|
-
| **"
|
|
68
|
-
| **"
|
|
69
|
-
| **"
|
|
70
|
-
| **"
|
|
71
|
-
| "
|
|
72
|
-
| "
|
|
53
|
+
| **"Pre-delivery exploration / research"**| `discovery`| `/discovery` | **Pre-Flight**: `discovery` -> `/feature` |
|
|
54
|
+
| **"Socratic alignment / ADR / glossary"**| `grill` | `/grill` / `/align` | **Pre-Flight**: `grill` -> `/feature` |
|
|
55
|
+
| **"Execute implementation tasks"** | `implement` | `/implement` | **Core Loop**: `/implement` -> `/check` |
|
|
56
|
+
| **"Run QA verification & check"** | `check` | `/check` | **Core Loop**: `/check` -> `/complete` |
|
|
57
|
+
| **"Complete run & git merge"** | `complete` | `/complete` | **Core Loop**: `/complete` |
|
|
58
|
+
| **"Generate HTML dashboard report"**| `report-html` | `/report:html` | **Standalone**: Converts `current-feature.md` or archive to HTML |
|
|
59
|
+
| "Setup DevFlow on fresh/new project" | `onboard` | `onboard` / `setup` | `onboard` -> `/feature` |
|
|
60
|
+
| "Adopt DevFlow on existing codebase" | `adopt` | `adopt` / `bootstrap` | `adopt` -> `/feature` |
|
|
73
61
|
| "Check setup health & diagnostics" | `doctor` | `doctor` / `health` | `doctor` |
|
|
74
|
-
| "Explore a new request / deep idea" | `discovery` | `discovery` / `/discovery` | **Deep-Track**: `discovery` -> `10` -> `20` -> ... |
|
|
75
|
-
| "Define delivery boundaries and ID" | `10-define` | `define` | **Deep-Track**: `10` -> `20` -> `30` |
|
|
76
|
-
| "Break down spec into plan (Deep)" | `30-plan` | `plan` | **Deep-Track**: `30` -> `40` -> `50` |
|
|
77
|
-
| "Deep code implementation" | `40-execute` | `implement` | **Deep-Track**: `40` -> `50` |
|
|
78
|
-
| "Deep QA verification" | `50-verify` | `verify` | **Deep-Track**: `50` -> `60` -> `70` |
|
|
79
|
-
| "Deep markdown digest report" | `60-report` | `report` | **Deep-Track**: `60` -> `70` |
|
|
80
|
-
| "Deep release packaging & merge" | `70-deliver` | `release` | **Deep-Track**: `70-deliver` |
|
|
81
62
|
| "Human manual QA walkthrough guide" | `try` | `try` | Companion (after implement or check) |
|
|
82
|
-
| "Safely plan feature or run reversal"
|
|
63
|
+
| "Safely plan feature or run reversal"| `rollback` | `rollback` | Companion |
|
|
83
64
|
| "Set up automatic GitHub Actions CI" | `ci` | `ci` | Companion |
|
|
84
|
-
| "Pre-check scope & risks before spec"
|
|
65
|
+
| "Pre-check scope & risks before spec"| `brief` | `brief` | Companion |
|
|
85
66
|
| "Run autonomous bounded delivery loop"| `autopilot` | `autopilot` | Companion |
|
|
86
67
|
| "Brainstorm ideas without ID" | `brainstorm` | `brainstorm` | Companion |
|
|
87
|
-
| "Socratic alignment / ADR / glossary" | `grill` | `/grill` / `align` | Companion (pre-spec / domain modeling) |
|
|
88
68
|
| "Investigate failure or root cause" | `debug` | `debug` | Companion |
|
|
89
69
|
|
|
90
70
|
---
|
|
91
71
|
|
|
92
72
|
## Available Skills Sitemap
|
|
93
73
|
|
|
94
|
-
### 1.
|
|
95
|
-
- `
|
|
96
|
-
- `
|
|
97
|
-
- `
|
|
98
|
-
- `
|
|
74
|
+
### 1. Mainline Living Spec Loop (4 Steps)
|
|
75
|
+
- `feature` (`/feature`, `/spec`) - Define, spec, and plan in `current-feature.md`
|
|
76
|
+
- `fix` (`/fix`) - Document an ad-hoc bug or change in `current-feature.md`
|
|
77
|
+
- `implement` (`/implement`) - Execute planned checklist tasks with TDD
|
|
78
|
+
- `check` (`/check`) - Senior QA review, multi-lane verification, record evidence
|
|
79
|
+
- `complete` (`/complete`) - Safety pass, release digest, git merge, close run
|
|
99
80
|
|
|
100
|
-
### 2.
|
|
81
|
+
### 2. Pre-Flight Discovery Engine
|
|
101
82
|
- `discovery` - Project roadmap planning or feature exploration before delivery commitment
|
|
102
|
-
- `
|
|
103
|
-
- `
|
|
104
|
-
- `
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
- `
|
|
108
|
-
- `
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
- `
|
|
112
|
-
- `
|
|
113
|
-
- `
|
|
114
|
-
- `
|
|
115
|
-
- `
|
|
116
|
-
- `
|
|
117
|
-
- `adopt` - Bootstrap DevFlow into existing brownfield projects
|
|
118
|
-
- `doctor` - Read-only health check for setup and drift
|
|
119
|
-
- `try` - Step-by-step human manual QA review guide
|
|
120
|
-
- `rollback` - Safe feature/run reversal planner
|
|
121
|
-
- `ci` - Automatic GitHub Actions workflow setup
|
|
122
|
-
- `brief` - Read-only scope and risk pre-briefing
|
|
123
|
-
- `autopilot` - Autonomous bounded delivery loop
|
|
124
|
-
- `debug` - Root cause investigation before or during implementation
|
|
125
|
-
- `overview` - Living context synchronization into project-overview.md
|
|
83
|
+
- `idea` - Quick idea capture with AI feasibility scoring
|
|
84
|
+
- `grill` (or `align`) - Socratic alignment, domain modeling, and ADR recording
|
|
85
|
+
- `brainstorm` - Multi-option ideation with trade-off analysis
|
|
86
|
+
|
|
87
|
+
### 3. Verification & Diagnostic Companions
|
|
88
|
+
- `doctor` - Health check for setup, adapters, and workspace state
|
|
89
|
+
- `audit` - Branch-aware or full-project code, security, and quality review
|
|
90
|
+
- `test` / `tests` - Test suite runner and unit test scaffolding
|
|
91
|
+
- `ci` - Set up or normalize GitHub Actions checks
|
|
92
|
+
- `status` - Read-only progress summary and next action suggestion
|
|
93
|
+
- `try` - Human manual QA walkthrough guide
|
|
94
|
+
- `report-html` - Standalone interactive HTML report dashboard
|
|
95
|
+
- `debug` - Root-cause investigation without editing code
|
|
96
|
+
- `rollback` - Safe reversal of completed features
|
|
97
|
+
- `release` - Deployment readiness check
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: complete
|
|
3
|
-
description: "[devflow][F] Wrap up a finished feature, fix, or rollback. Runs a final safety pass, archives its spec to devflow/history/features/, devflow/history/fixes/, or devflow/history/rollbacks/, updates the build plan for features and rollbacks, resets devflow/context/current-feature.md to its stub, makes
|
|
3
|
+
description: "[devflow][F] Wrap up a finished feature, fix, or rollback. Runs a final safety pass, archives its spec to devflow/history/features/, devflow/history/fixes/, or devflow/history/rollbacks/, updates the build plan for features and rollbacks, resets devflow/context/current-feature.md to its stub, and makes the work commit. Enforces a mandatory user gate: asks whether to squash-merge to main/master OR pull latest main/master into the feature/dev branch and push to remote for Merge Request (MR / PR) creation. Never merges into main/master without explicit user instruction."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# complete - log the finished work, make the work commit, and
|
|
6
|
+
# complete - log the finished work, make the work commit, and deliver
|
|
7
7
|
|
|
8
8
|
Where this sits in the workflow:
|
|
9
9
|
|
|
10
10
|
/feature, /fix, or /rollback -> /implement -> [complete] -> next
|
|
11
|
-
(the spec) (build it) (commit +
|
|
11
|
+
(the spec) (build it) (commit + delivery gate)
|
|
12
12
|
|
|
13
13
|
`/implement` built the feature, fix, or rollback on its branch, with optional per-step commit
|
|
14
14
|
checkpoints. This skill closes it out: it logs the work, makes the single
|
|
15
|
-
work-level commit, and
|
|
15
|
+
work-level commit, and guides the delivery through a **Mandatory User Delivery Gate**. Run it only when the work is done,
|
|
16
16
|
reviewed, and the documented `Verify` command, or the fallback build and tests,
|
|
17
17
|
passes.
|
|
18
18
|
|
|
@@ -22,7 +22,7 @@ Confirm the work is actually finished: `devflow/context/current-feature.md`
|
|
|
22
22
|
holds a real spec, its steps are built on a branch, and `Verify`, or the fallback
|
|
23
23
|
build and tests, passes. If any of the
|
|
24
24
|
spec's done-whens are behavioral, `/check` should have proven them against the
|
|
25
|
-
running app first - don't merge on an unverified claim. Uncommitted step work is
|
|
25
|
+
running app first - don't merge or complete on an unverified claim. Uncommitted step work is
|
|
26
26
|
expected (per-step checkpoints are optional); this skill commits it. Don't require
|
|
27
27
|
the steps to be pre-committed.
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ the steps to be pre-committed.
|
|
|
30
30
|
|
|
31
31
|
Before logging or committing, run a short safety pass and report blockers only:
|
|
32
32
|
|
|
33
|
-
- active spec exists and the work is not being completed from `main` or `master`
|
|
33
|
+
- active spec exists and the work is not being completed directly from `main` or `master`
|
|
34
34
|
- changed files are tied to the active spec, with no unrelated dirty work mixed
|
|
35
35
|
in (a dirty `devflow/context/findings.md` is expected, since `/audit` writes it)
|
|
36
36
|
- the exact `Verify` command from `AGENTS.md` passed in this session, when one is
|
|
@@ -107,25 +107,47 @@ into the app - delete the `prototypes/` folder now. The tokens live in the real
|
|
|
107
107
|
stylesheet and the HTML mockups were always throwaway; fold the deletion into this
|
|
108
108
|
feature's commit. Skip this if the feature didn't consume prototypes.
|
|
109
109
|
|
|
110
|
-
## Step 2 - make the work commit
|
|
110
|
+
## Step 2 - make the work commit on feature branch
|
|
111
111
|
|
|
112
112
|
Stage everything on the branch (any uncommitted step work plus the Step 1 logging
|
|
113
|
-
changes) and make one conventional work commit (for example `feat: <feature>`,
|
|
113
|
+
changes) and make one conventional work commit on the active branch (for example `feat: <feature>`,
|
|
114
114
|
`fix: <name>`, or `revert: roll back <feature>`). `Verify`, or the fallback build
|
|
115
115
|
and tests, must pass first.
|
|
116
116
|
|
|
117
|
-
## Step 3 -
|
|
117
|
+
## Step 3 - Mandatory Delivery Gate (Ask User First)
|
|
118
|
+
|
|
119
|
+
> [!IMPORTANT]
|
|
120
|
+
> **MANDATORY USER SELECTION**: In real-world engineering teams, developers often do NOT have direct merge/push access to `main` or `master` (protected branches).
|
|
121
|
+
> Therefore, you **MUST STOP AND ASK** the user to choose their desired delivery flow. **NEVER automatically merge into `main` or `master` without explicit user choice.**
|
|
122
|
+
|
|
123
|
+
Present the user with two clear delivery options:
|
|
124
|
+
|
|
125
|
+
### 🔀 Option 1: Team MR / PR Flow (Pull latest main/master & Push dev branch) [Default for Teams]
|
|
126
|
+
- **When to choose**: When working in a team where code reviews happen via GitLab Merge Request (MR) or GitHub Pull Request (PR), or where developers lack direct write access to protected `main`/`master` branches.
|
|
127
|
+
- **Execution Actions**:
|
|
128
|
+
1. Detect default base branch name (`main` or `master`).
|
|
129
|
+
2. Run `git pull origin <main/master>` (or `git fetch origin <main/master> && git merge origin/<main/master>`) to bring the latest upstream changes into the active feature/dev branch.
|
|
130
|
+
3. If merge conflicts occur, highlight them clearly and help the user resolve them.
|
|
131
|
+
4. Run `Verify` (or build & tests) to ensure integrity after the merge.
|
|
132
|
+
5. Run `git push origin <current-feature-branch>` to push the up-to-date branch to the remote repository.
|
|
133
|
+
6. Stop and inform the user that the branch is synchronized and pushed, ready for them to open a Merge Request (MR / PR) on GitLab/GitHub.
|
|
134
|
+
7. **Do NOT merge into local `main`/`master` and do NOT delete the branch.**
|
|
135
|
+
|
|
136
|
+
### 🔀 Option 2: Direct Local Squash-Merge (Solo / Direct Access Mode)
|
|
137
|
+
- **When to choose**: Only when the user explicitly instructs that they want to merge directly into `main` or `master` locally now (e.g. solo projects or Tech Leads with merge privileges).
|
|
138
|
+
- **Execution Actions**:
|
|
139
|
+
1. Switch to `main` or `master`: `git checkout <main/master>`.
|
|
140
|
+
2. Squash-merge the branch: `git merge --squash <feature-branch>`.
|
|
141
|
+
3. Commit the squash-merge.
|
|
142
|
+
4. Delete the local feature branch only with the user's explicit consent.
|
|
143
|
+
5. **Stop and ask separately** before pushing local `main`/`master` to remote upstream. The merge approval does NOT count as push approval.
|
|
144
|
+
6. Run `git push origin <main/master>` only after separate explicit confirmation.
|
|
118
145
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
2. Delete the branch after a clean merge.
|
|
123
|
-
3. Stop and ask whether to push local `main` to its upstream. The merge approval
|
|
124
|
-
does not count as push approval.
|
|
125
|
-
4. Push main only after a separate explicit yes to push main in the current chat.
|
|
126
|
-
If the repo has no remote or upstream, say so instead of guessing.
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Step 4 - Finish & Try Path
|
|
127
149
|
|
|
128
|
-
|
|
150
|
+
Point the user at `/feature`, `/fix`, or `/rollback` for the next task.
|
|
129
151
|
|
|
130
152
|
Finish with a concise **How to try it** note for the completed work. For a
|
|
131
153
|
rollback, explain how to confirm the removed behavior is gone and name one
|
|
@@ -135,26 +157,15 @@ that command can read the archived feature after `current-feature.md` is reset.
|
|
|
135
157
|
|
|
136
158
|
## Rules
|
|
137
159
|
|
|
160
|
+
- **Mandatory User Confirmation Gate**: Always ask before choosing between Team MR/PR Push vs Direct Squash-Merge.
|
|
161
|
+
- **Never auto-merge into main/master**: The decision to merge into `main` or `master` belongs strictly to the user.
|
|
138
162
|
- The work item is the unit of history: one squashed feature, fix, or rollback
|
|
139
|
-
commit
|
|
163
|
+
commit, even if the branch carried several checkpoint commits.
|
|
140
164
|
- A rollback preserves the original feature archive and adds a separate rollback
|
|
141
165
|
archive. Never rewrite history to make the feature look as if it never existed.
|
|
142
|
-
- Don't merge unfinished or failing work. The documented `Verify` command, or
|
|
166
|
+
- Don't merge or push unfinished or failing work. The documented `Verify` command, or
|
|
143
167
|
the fallback build and tests, must pass first.
|
|
144
|
-
- Never merge while a P0 or P1 finding is `open` or `fixed` in the ledger.
|
|
145
|
-
|
|
146
|
-
explicit decision, with their reason) or `invalid` (only from re-examination
|
|
147
|
-
evidence or the user's explicit call); both travel into the archive, never a
|
|
148
|
-
silent drop.
|
|
149
|
-
- Merging and pushing are the user's calls: get an explicit yes for the merge,
|
|
150
|
-
then ask whether to push main. Do not treat merge approval, `/complete`, or
|
|
151
|
-
"looks good" as permission to push.
|
|
152
|
-
- Push main only after a separate explicit yes to push main in the current chat.
|
|
168
|
+
- Never merge or push while a P0 or P1 finding is `open` or `fixed` in the ledger.
|
|
169
|
+
- Pushing to remote is always explicit: confirm before running `git push`.
|
|
153
170
|
- One item per completion. If a parent feature still has unchecked sub-features,
|
|
154
|
-
leave the parent unchecked.
|
|
155
|
-
|
|
156
|
-
## Formatting
|
|
157
|
-
|
|
158
|
-
Format the output to match the project's conventions in
|
|
159
|
-
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
160
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
171
|
+
leave the parent unchecked.
|