@reforma/agentflow 0.0.1 → 1.0.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/README.md +23 -27
- package/package.json +61 -1
- package/skills/plan/SKILL.md +4 -0
package/README.md
CHANGED
|
@@ -44,7 +44,7 @@ Reusable agent skills are published from `skills/`:
|
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
47
|
-
## The Loop
|
|
47
|
+
## 🔄 The Loop
|
|
48
48
|
|
|
49
49
|
Research helps when the agent does not know the area, and most larger tasks also need a plan. But almost every task goes through Grill. Small, obvious changes can go straight from Grill to implementation.
|
|
50
50
|
|
|
@@ -58,7 +58,7 @@ Research helps when the agent does not know the area, and most larger tasks also
|
|
|
58
58
|
|
|
59
59
|
Repeat steps 4–7 until every PR in the plan is complete.
|
|
60
60
|
|
|
61
|
-
### Step 1. Learn how it works (optional)
|
|
61
|
+
### Step 1. 🔍 Learn how it works (optional)
|
|
62
62
|
|
|
63
63
|
Research does not require a skill. Even a simple prompt like "Find out how
|
|
64
64
|
authentication works in this project" can make the implementation much easier.
|
|
@@ -73,7 +73,7 @@ context compaction or in a new chat.
|
|
|
73
73
|
|
|
74
74
|
Even if you skip this step, Grill will fill in any gaps.
|
|
75
75
|
|
|
76
|
-
### Step 2. Sharpen the idea with Grill
|
|
76
|
+
### Step 2. 🔥 Sharpen the idea with Grill
|
|
77
77
|
|
|
78
78
|
Grill is the core of AgentFlow and the one step used for the most tasks.
|
|
79
79
|
|
|
@@ -87,7 +87,7 @@ until nothing important is left unclear.
|
|
|
87
87
|
This gives the implementation an agreed starting point instead of leaving the
|
|
88
88
|
agent to fill in gaps on its own.
|
|
89
89
|
|
|
90
|
-
### Step 3. Plan and slice the work into PRs
|
|
90
|
+
### Step 3. 🗂️ Plan and slice the work into PRs
|
|
91
91
|
|
|
92
92
|
For a larger task, planning usually follows Grill in the same chat. If you asked
|
|
93
93
|
Grill to plan next, it loads `/plan` automatically. You can also run `/plan`
|
|
@@ -113,10 +113,7 @@ that first uses them instead of becoming placeholder PRs.
|
|
|
113
113
|
|
|
114
114
|
Keep the plan updated as the work changes.
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
verify it.
|
|
118
|
-
|
|
119
|
-
### Step 4. Implement one PR
|
|
116
|
+
### Step 4. 🛠️ Implement one PR
|
|
120
117
|
|
|
121
118
|
Implement the first unchecked PR and nothing beyond it. Without a plan, keep the
|
|
122
119
|
change small enough to review. You can stay in the current chat, start a fresh
|
|
@@ -126,34 +123,28 @@ to another chat. Use `/tdd` for test-first work.
|
|
|
126
123
|
Load any relevant skills named in `AGENTS.md`. If work spills into a later PR,
|
|
127
124
|
update the plan instead of silently expanding the current one.
|
|
128
125
|
|
|
129
|
-
|
|
126
|
+
Before review, update `plan.md`: check the completed PR only after its
|
|
127
|
+
done-when and verification pass, then apply any scope changes to later rows.
|
|
130
128
|
|
|
131
|
-
### Step 5. Agent review
|
|
129
|
+
### Step 5. 🤖 Agent review
|
|
132
130
|
|
|
133
131
|
Run `/code-review` on the completed PR. It looks for code to reuse, unnecessary
|
|
134
132
|
wrappers, and avoidable complexity. It fixes small local problems and returns a
|
|
135
133
|
verdict: keep, shrink, or burn.
|
|
136
134
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
### Step 6. Your review, then commit
|
|
135
|
+
### Step 6. ✅ Your review, then commit
|
|
140
136
|
|
|
141
137
|
Read the diff yourself, then commit it using the project's normal workflow.
|
|
142
138
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
### Step 7. Refresh the context when needed
|
|
139
|
+
### Step 7. 🔄 Refresh the context when needed
|
|
146
140
|
|
|
147
141
|
Keep the current chat if it still has useful context. When it gets noisy,
|
|
148
142
|
summarize it or start a fresh one. Run `/handoff` to save what shipped, what
|
|
149
143
|
changed, and which PR comes next.
|
|
150
144
|
|
|
151
|
-
Attach the plan and handoff to a fresh chat when they exist.
|
|
145
|
+
Attach the plan and handoff to a fresh chat when they exist, then return to step 4.
|
|
152
146
|
|
|
153
|
-
|
|
154
|
-
work. Return to step 4.
|
|
155
|
-
|
|
156
|
-
## Install
|
|
147
|
+
## 📦 Install
|
|
157
148
|
|
|
158
149
|
Install the complete workflow in a project:
|
|
159
150
|
|
|
@@ -185,7 +176,7 @@ npx skills update plan
|
|
|
185
176
|
|
|
186
177
|
---
|
|
187
178
|
|
|
188
|
-
## Why AgentFlow?
|
|
179
|
+
## 💡 Why AgentFlow?
|
|
189
180
|
|
|
190
181
|
Coding agents can handle large changes, but chat history is a poor place to
|
|
191
182
|
keep requirements, scope, and decisions. AgentFlow moves that information into
|
|
@@ -202,7 +193,7 @@ small files and gives each PR a clear boundary.
|
|
|
202
193
|
fixed, while the documentation is limited to one plan and one current
|
|
203
194
|
handoff.
|
|
204
195
|
|
|
205
|
-
### How we compare
|
|
196
|
+
### ⚖️ How we compare
|
|
206
197
|
|
|
207
198
|
OpenSpec and Spec Kit try to cover most of spec-driven development with their
|
|
208
199
|
own commands, templates, and artifacts. AgentFlow does not try to be an
|
|
@@ -225,7 +216,7 @@ fix. On larger changes, AgentFlow keeps decisions out of transient history,
|
|
|
225
216
|
limits scope to one reviewable slice, and gives the next session a reliable
|
|
226
217
|
starting point.
|
|
227
218
|
|
|
228
|
-
## Releasing
|
|
219
|
+
## 🚀 Releasing
|
|
229
220
|
|
|
230
221
|
Add a changeset with every publishable change:
|
|
231
222
|
|
|
@@ -238,9 +229,6 @@ updates its version and changelog, publishes it to npm through trusted
|
|
|
238
229
|
publishing, and commits the release files back to `main`. A separate job then
|
|
239
230
|
publishes the matching versioned Agent Skills release on GitHub.
|
|
240
231
|
|
|
241
|
-
The npm trusted publisher for `@reforma/agentflow` must point at
|
|
242
|
-
`reforma-dev/agentflow/.github/workflows/publish_npm.yml`.
|
|
243
|
-
|
|
244
232
|
Validate a release locally without publishing:
|
|
245
233
|
|
|
246
234
|
```bash
|
|
@@ -249,4 +237,12 @@ bun run test
|
|
|
249
237
|
bun publish --dry-run
|
|
250
238
|
```
|
|
251
239
|
|
|
240
|
+
## 📖 License
|
|
241
|
+
|
|
252
242
|
AgentFlow is available under the [MIT License](LICENSE).
|
|
243
|
+
|
|
244
|
+
## 👤 Maintainer
|
|
245
|
+
|
|
246
|
+
<img src="https://github.com/kachurun.png" width="100" height="100" alt="@kachurun's avatar" style="border-radius: 50%;">
|
|
247
|
+
|
|
248
|
+
Maintained with ❤️ by [@kachurun](https://github.com/kachurun)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reforma/agentflow",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "An opinionated workflow for shipping production-ready changes with coding agents.",
|
|
5
5
|
"author": "Reforma, Inc. <dev@reforma.ai>",
|
|
6
6
|
"type": "module",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"LICENSE"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
+
"prepare": "node -e \"if (process.env.CI === 'true' || process.env.SKIP_GIT_HOOKS === '1') process.exit(0); require('child_process').execSync('bunx simple-git-hooks', {stdio:'inherit'})\"",
|
|
17
18
|
"build": "bun build src/bin.ts --target=node --outfile=bin/agentflow.js --external skills",
|
|
18
19
|
"typecheck": "tsc --noEmit",
|
|
19
20
|
"changeset": "bunx @changesets/cli",
|
|
@@ -23,6 +24,9 @@
|
|
|
23
24
|
"validate:skills": "gh skill publish --dry-run",
|
|
24
25
|
"prepublishOnly": "bun run typecheck && bun run test && bun run build"
|
|
25
26
|
},
|
|
27
|
+
"simple-git-hooks": {
|
|
28
|
+
"commit-msg": "bunx --no-install commitlint --edit \"$1\""
|
|
29
|
+
},
|
|
26
30
|
"repository": {
|
|
27
31
|
"type": "git",
|
|
28
32
|
"url": "git+https://github.com/reforma-dev/agentflow.git"
|
|
@@ -48,8 +52,64 @@
|
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|
|
50
54
|
"@changesets/cli": "3.0.1",
|
|
55
|
+
"@commitlint/cli": "21.2.2",
|
|
56
|
+
"@commitlint/config-conventional": "21.2.2",
|
|
51
57
|
"@types/bun": "1.4.0",
|
|
52
58
|
"@types/node": "26.4.0",
|
|
59
|
+
"simple-git-hooks": "2.14.0",
|
|
53
60
|
"typescript": "7.0.2"
|
|
61
|
+
},
|
|
62
|
+
"commitlint": {
|
|
63
|
+
"extends": [
|
|
64
|
+
"@commitlint/config-conventional"
|
|
65
|
+
],
|
|
66
|
+
"rules": {
|
|
67
|
+
"type-enum": [
|
|
68
|
+
2,
|
|
69
|
+
"always",
|
|
70
|
+
[
|
|
71
|
+
"feat",
|
|
72
|
+
"fix",
|
|
73
|
+
"chore",
|
|
74
|
+
"refactor",
|
|
75
|
+
"docs",
|
|
76
|
+
"test",
|
|
77
|
+
"ci",
|
|
78
|
+
"perf",
|
|
79
|
+
"revert"
|
|
80
|
+
]
|
|
81
|
+
],
|
|
82
|
+
"type-case": [
|
|
83
|
+
2,
|
|
84
|
+
"always",
|
|
85
|
+
"lower-case"
|
|
86
|
+
],
|
|
87
|
+
"type-empty": [
|
|
88
|
+
2,
|
|
89
|
+
"never"
|
|
90
|
+
],
|
|
91
|
+
"subject-empty": [
|
|
92
|
+
2,
|
|
93
|
+
"never"
|
|
94
|
+
],
|
|
95
|
+
"subject-min-length": [
|
|
96
|
+
1,
|
|
97
|
+
"always",
|
|
98
|
+
4
|
|
99
|
+
],
|
|
100
|
+
"body-max-line-length": [
|
|
101
|
+
1,
|
|
102
|
+
"always",
|
|
103
|
+
250
|
|
104
|
+
],
|
|
105
|
+
"subject-case": [
|
|
106
|
+
2,
|
|
107
|
+
"never",
|
|
108
|
+
[
|
|
109
|
+
"pascal-case",
|
|
110
|
+
"upper-case"
|
|
111
|
+
]
|
|
112
|
+
]
|
|
113
|
+
}
|
|
54
114
|
}
|
|
55
115
|
}
|
package/skills/plan/SKILL.md
CHANGED
|
@@ -26,6 +26,10 @@ plan.
|
|
|
26
26
|
```markdown
|
|
27
27
|
# <Feature>
|
|
28
28
|
|
|
29
|
+
> Keep this plan current during implementation.
|
|
30
|
+
> Check a PR only after its done-when and verification pass.
|
|
31
|
+
> Record scope changes before leaving the PR.
|
|
32
|
+
|
|
29
33
|
**Goal:** one sentence
|
|
30
34
|
**Approach:** 2–3 sentences — the chosen reading
|
|
31
35
|
**Reuse:** existing APIs this plan calls (`path`)
|