@relipa/ai-flow-kit 0.0.6-beta.0 → 0.0.7-beta.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.
Files changed (40) hide show
  1. package/README.md +33 -13
  2. package/bin/aiflow.js +58 -2
  3. package/custom/mcp-presets/gitnexus.json +8 -0
  4. package/custom/rules/java/spring-boot-examples.md +329 -329
  5. package/custom/skills/generate-spec/SKILL.md +7 -0
  6. package/custom/skills/impact-analysis/SKILL.md +10 -0
  7. package/custom/skills/read-study-requirement/SKILL.md +11 -0
  8. package/custom/skills/review-plan/SKILL.md +15 -0
  9. package/custom/templates/spring-boot.md +224 -224
  10. package/docs/common/AIFLOW.md +12 -6
  11. package/docs/common/CHANGELOG.md +49 -5
  12. package/docs/common/QUICK_START.md +13 -11
  13. package/docs/common/cli-reference.md +23 -0
  14. package/package.json +2 -7
  15. package/scripts/checkpoint.js +46 -0
  16. package/scripts/doctor.js +192 -89
  17. package/scripts/gitnexus-worker.js +94 -0
  18. package/scripts/guide.js +42 -51
  19. package/scripts/hooks/session-start.js +274 -244
  20. package/scripts/hooks/session-stop.js +55 -0
  21. package/scripts/init.js +293 -18
  22. package/scripts/prompt.js +2 -2
  23. package/scripts/remove.js +54 -0
  24. package/scripts/task.js +446 -384
  25. package/scripts/update.js +14 -4
  26. package/scripts/use.js +41 -0
  27. package/upstream/.claude-plugin/marketplace.json +4 -4
  28. package/upstream/.claude-plugin/plugin.json +2 -4
  29. package/upstream/.cursor-plugin/plugin.json +2 -4
  30. package/upstream/docs/plans/2025-11-22-opencode-support-design.md +1 -1
  31. package/upstream/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +2 -2
  32. package/upstream/docs/testing.md +2 -2
  33. package/upstream/skills/subagent-driven-development/SKILL.md +5 -6
  34. package/upstream/skills/subagent-driven-development/implementer-prompt.md +2 -3
  35. package/upstream/skills/systematic-debugging/CREATION-LOG.md +1 -1
  36. package/upstream/skills/systematic-debugging/root-cause-tracing.md +1 -1
  37. package/upstream/skills/tdd-lean/SKILL.md +127 -0
  38. package/upstream/skills/using-git-worktrees/SKILL.md +4 -5
  39. package/upstream/skills/writing-plans/SKILL.md +3 -9
  40. package/upstream/tests/brainstorm-server/package-lock.json +36 -0
package/README.md CHANGED
@@ -23,11 +23,11 @@ Developers only need a single command to load ticket context → AI automaticall
23
23
  > [!TIP]
24
24
  > After running `aiflow init`, documentation files are automatically copied to `.aiflow/docs/` in your project for easy access.
25
25
 
26
- - **[Quick Start Guide](https://gitlab.relipa.vn/ai/ai-flow-kit/-/blob/main/docs/common/QUICK_START.md)** — Step-by-step instructions for developers.
27
- - **[Full Workflow (5 Gates)](https://gitlab.relipa.vn/ai/ai-flow-kit/-/blob/main/docs/common/AIFLOW.md)** — In-depth look at the Gate process.
28
- - **[Troubleshooting](https://gitlab.relipa.vn/ai/ai-flow-kit/-/blob/main/docs/common/troubleshooting.md)** — Common issues and fixes.
29
- - **[Integration Guide](https://gitlab.relipa.vn/ai/ai-flow-kit/-/blob/main/docs/common/ai-integration.md)** — Advanced tool setup (Claude, Cursor, Gemini).
30
- - **[Changelog](https://gitlab.relipa.vn/ai/ai-flow-kit/-/blob/main/docs/common/CHANGELOG.md)** — Version history and release notes.
26
+ - **[Quick Start Guide](https://github.com/example/ai-flow-kit/blob/main/docs/common/QUICK_START.md)** — Step-by-step instructions for developers.
27
+ - **[Full Workflow (5 Gates)](https://github.com/example/ai-flow-kit/blob/main/docs/common/AIFLOW.md)** — In-depth look at the Gate process.
28
+ - **[Troubleshooting](https://github.com/example/ai-flow-kit/blob/main/docs/common/troubleshooting.md)** — Common issues and fixes.
29
+ - **[Integration Guide](https://github.com/example/ai-flow-kit/blob/main/docs/common/ai-integration.md)** — Advanced tool setup (Claude, Cursor, Gemini).
30
+ - **[Changelog](https://github.com/example/ai-flow-kit/blob/main/docs/common/CHANGELOG.md)** — Version history and release notes.
31
31
 
32
32
  ---
33
33
 
@@ -52,7 +52,7 @@ PM writes ticket on Backlog/Jira
52
52
 
53
53
  ⛩️ GATE 3 — Code Generation (TDD) [AI]
54
54
  AI writes tests first → implement → tests pass
55
- Commit each small step
55
+ Verify implementation works
56
56
  │ Code done
57
57
 
58
58
  ⛩️ GATE 4 — AI Self-Review [AI + DEV]
@@ -74,13 +74,13 @@ PM writes ticket on Backlog/Jira
74
74
 
75
75
  ```bash
76
76
  # Stable version
77
- npm install -g @relipa/ai-flow-kit
77
+ npm install -g ai-flow-kit
78
78
 
79
79
  # Beta version (recommend for newest features)
80
- npm install -g @relipa/ai-flow-kit@beta
80
+ npm install -g ai-flow-kit@beta
81
81
 
82
82
  # Uninstall
83
- npm uninstall -g @relipa/ai-flow-kit
83
+ npm uninstall -g ai-flow-kit
84
84
  ```
85
85
 
86
86
  ---
@@ -93,6 +93,7 @@ npm uninstall -g @relipa/ai-flow-kit
93
93
  | `aiflow use <ticket>` | Load ticket context (Backlog/Jira). |
94
94
  | `aiflow task` | Manage multiple tasks — pause, switch, resume. |
95
95
  | `aiflow prompt` | Generate tool-optimized prompts (`--env cursor`). |
96
+ | `aiflow sync-skills` | Manually synchronize AI Instruction files with local custom skills. |
96
97
  | `aiflow telemetry` | Manage telemetry tracking (enable/disable/status). |
97
98
  | `aiflow guide` | View integrated multi-AI integration guide. |
98
99
 
@@ -104,8 +105,10 @@ Initial setup for the project. Run once per project.
104
105
  # Single framework + adapter
105
106
  aiflow init --framework spring-boot --adapter backlog
106
107
 
107
- # Force enable RTK token compression
108
- aiflow init --with-rtk
108
+ # Enable token savings tools
109
+ aiflow init --with-rtk # RTK: compress bash outputs (60–90% reduction)
110
+ # aiflow init --with-gitnexus # GitNexus: code intelligence (waits for index)
111
+ # aiflow init --with-gitnexus --no-wait # GitNexus: index in background
109
112
 
110
113
  # Multiple frameworks and adapters
111
114
  aiflow init --framework spring-boot,reactjs --adapter backlog,jira
@@ -126,6 +129,21 @@ aiflow init --framework spring-boot,reactjs --adapter backlog,jira
126
129
 
127
130
  ---
128
131
 
132
+ ### `aiflow sync-skills`
133
+
134
+ Synchronize AI instruction files (`CLAUDE.md`, `GEMINI.md`, etc.) and Skills without upgrading the package version.
135
+
136
+ ```bash
137
+ aiflow sync-skills
138
+ ```
139
+
140
+ **Features:**
141
+ - Intelligent marker-based updates (`<!-- aiflow-kit-start -->`)
142
+ - Confirmation prompts before overwriting custom rules
143
+ - English notifications and status reports
144
+
145
+ ---
146
+
129
147
  ### `aiflow use <ticket>`
130
148
 
131
149
  Load ticket context into `.aiflow/context/current.json`.
@@ -179,6 +197,8 @@ aiflow task switch PROJ-99 # pause current + switch to another task
179
197
  aiflow task resume PROJ-33 # resume a paused task (restores context + gate state)
180
198
  aiflow task reset PROJ-33 # reset to Gate 1 (keeps ticket context, clears progress)
181
199
  aiflow task remove PROJ-33 # permanently delete all saved data for the task
200
+ aiflow task next # approve current gate + prepare for fresh session
201
+ aiflow task next --ticket PROJ-33 # same, but specify ticket explicitly
182
202
  ```
183
203
 
184
204
  **Use case — switching tasks mid-flow:**
@@ -337,7 +357,7 @@ ai-flow-kit/
337
357
 
338
358
  **Custom skill:** create `custom/skills/<name>/SKILL.md`
339
359
 
340
- Then run `aiflow update` to apply.
360
+ Then run `aiflow update` or `aiflow sync-skills` to apply.
341
361
 
342
362
  ---
343
363
 
@@ -355,7 +375,7 @@ Then run `aiflow update` to apply.
355
375
 
356
376
  **`aiflow` not found:**
357
377
  ```bash
358
- npm install -g @relipa/ai-flow-kit
378
+ npm install -g ai-flow-kit
359
379
  ```
360
380
 
361
381
  **Backlog load fails:**
package/bin/aiflow.js CHANGED
@@ -16,6 +16,7 @@ const removeCommand = require('../scripts/remove');
16
16
  const guideCommand = require('../scripts/guide');
17
17
  const telemetryCommand= require('../scripts/telemetry/cli');
18
18
  const taskCommand = require('../scripts/task');
19
+ const checkpointCommand = require('../scripts/checkpoint');
19
20
  const { record } = require('../scripts/telemetry/record');
20
21
 
21
22
  program
@@ -63,6 +64,8 @@ program
63
64
  .option('-e, --env <types>', 'AI environment(s)/tool(s), comma-separated (e.g. cursor,gemini,copilot)')
64
65
  .option('--with-rtk', 'force enable RTK token compression hook')
65
66
  .option('--no-rtk', 'skip RTK setup even if RTK is detected')
67
+ // .option('--with-gitnexus', 'enable GitNexus code intelligence (indexes in background)')
68
+ // .option('--wait', 'wait for GitNexus indexing to complete before exiting')
66
69
  .action((options) => {
67
70
  options.frameworks = options.framework
68
71
  ? options.framework.split(',').map(s => s.trim()).filter(Boolean)
@@ -162,6 +165,15 @@ taskCmd
162
165
  .description('Permanently delete all saved data for a task')
163
166
  .action((ticketId) => { record('command.invoked', { command: 'task.remove' }); taskCommand('remove', { taskId: ticketId }); });
164
167
 
168
+ taskCmd
169
+ .command('next')
170
+ .description('Approve current gate and prepare next session (saves state for resume)')
171
+ .option('-t, --ticket <id>', 'ticket ID (defaults to active task)')
172
+ .action((opts) => {
173
+ record('command.invoked', { command: 'task.next' });
174
+ taskCommand('next', { taskId: opts.ticket });
175
+ });
176
+
165
177
  // ── context ───────────────────────────────────────────────────
166
178
  program
167
179
  .command('context [action]')
@@ -176,6 +188,19 @@ program
176
188
  contextCommand(action, options);
177
189
  });
178
190
 
191
+ // ── checkpoint ────────────────────────────────────────────────
192
+ program
193
+ .command('checkpoint')
194
+ .description('Record token usage checkpoint (called by AI during gate work)')
195
+ .requiredOption('--gate <n>', 'gate number (1–5)', parseInt)
196
+ .requiredOption('--step <name>', 'step name (e.g. "tests-written")')
197
+ .requiredOption('--tokens <n>', 'estimated token count', parseInt)
198
+ .option('-t, --ticket <id>', 'ticket ID (defaults to active task)')
199
+ .action((opts) => {
200
+ record('command.invoked', { command: 'checkpoint' });
201
+ checkpointCommand({ gate: opts.gate, step: opts.step, tokens: opts.tokens, ticket: opts.ticket });
202
+ });
203
+
179
204
  // ── validate ──────────────────────────────────────────────────
180
205
  program
181
206
  .command('validate <file>')
@@ -276,14 +301,45 @@ program
276
301
  updateCommand(options);
277
302
  });
278
303
 
304
+ // ── sync-skills ───────────────────────────────────────────────
305
+ program
306
+ .command('sync-skills')
307
+ .description('Manually synchronize AI Instruction files with local custom skills')
308
+ .action(async () => {
309
+ record('command.invoked', { command: 'sync-skills' });
310
+ const projectDir = process.cwd();
311
+ const { setupFramework, AI_TOOL_FILES, ensureAiflowGitignored } = require('../scripts/init');
312
+ const fs = require('fs-extra');
313
+ const path = require('path');
314
+ const chalk = require('chalk');
315
+
316
+ const stateFile = path.join(projectDir, '.aiflow', 'state.json');
317
+ if (!(await fs.pathExists(stateFile))) {
318
+ console.log(chalk.red('Project is not initialized. Please run `aiflow init` first.'));
319
+ return;
320
+ }
321
+
322
+ const state = await fs.readJson(stateFile);
323
+ const frameworks = state.frameworks || [];
324
+ const selectedTools = state.aiTools || Object.keys(AI_TOOL_FILES);
325
+
326
+ console.log(chalk.cyan('⟳ Syncing AI Instruction files...'));
327
+ for (const fw of frameworks) {
328
+ await setupFramework(projectDir, fw, frameworks.length > 1, selectedTools);
329
+ }
330
+ await ensureAiflowGitignored(projectDir);
331
+ console.log(chalk.green('✨ Sync completed!'));
332
+ });
333
+
279
334
  // ── doctor ────────────────────────────────────────────────────
280
335
  program
281
336
  .command('doctor')
282
337
  .description('Health check of AI Flow Kit setup')
338
+ .option('-t, --ticket <id>', 'show token breakdown for specific ticket')
283
339
  .option('-v, --verbose', 'detailed output')
284
- .action(() => {
340
+ .action((opts) => {
285
341
  record('command.invoked', { command: 'doctor' });
286
- doctorCommand();
342
+ doctorCommand({ ticket: opts.ticket, verbose: opts.verbose });
287
343
  });
288
344
 
289
345
  // ── telemetry ──────────────────────────────────────────────────
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "gitnexus": {
4
+ "command": "npx",
5
+ "args": ["-y", "gitnexus@latest", "mcp"]
6
+ }
7
+ }
8
+ }