feinai 0.5.6 → 0.5.7
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 +1 -1
- package/package.json +1 -1
- package/skills/feinai-sdd/SKILL.md +10 -10
- package/src/cli.ts +4 -4
package/README.md
CHANGED
|
@@ -165,7 +165,7 @@ tasks — atomic work units with blocked_by, quality_gates, worktree
|
|
|
165
165
|
events — append-only audit log: {parent_process}:{pid}:{user}
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
-
Every mutation is logged. Every agent is identified. Override identity with `$
|
|
168
|
+
Every mutation is logged. Every agent is identified. Override identity with `$FEINAI_USER`.
|
|
169
169
|
|
|
170
170
|
---
|
|
171
171
|
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ name: feinai-sdd
|
|
|
3
3
|
description: Use when working in spec-driven development (SDD) workflows that involve brainstorming, writing-plans, or subagent-driven-development AND the project has a `.tasca/tasca.db` file. Replaces creating markdown files in `docs/superpowers/specs/` and `docs/superpowers/plans/` with atomic `feinai` CLI calls, keeping state queryable, race-free, and audit-logged. Also use when the user asks to create a spec, add a task, claim work, or mark progress, in a project that uses tasca.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# feinai SDD integration
|
|
7
7
|
|
|
8
8
|
`feinai` is a CLI + local SQLite database for managing specs, plans, and tasks in
|
|
9
9
|
SDD workflows. When a project has `.tasca/tasca.db`, you should write to that
|
|
@@ -20,7 +20,7 @@ just change *where the artifacts get stored*.
|
|
|
20
20
|
Invoke when **all** of the following are true:
|
|
21
21
|
|
|
22
22
|
1. The project has a `.tasca/tasca.db` file (walk up the directory tree from
|
|
23
|
-
the current working directory;
|
|
23
|
+
the current working directory; feinai uses the same discovery pattern as git).
|
|
24
24
|
Check with: `feinai status` (exit code 0 = tasca is set up).
|
|
25
25
|
2. You are about to:
|
|
26
26
|
- Write a spec via the `brainstorming` skill, OR
|
|
@@ -41,7 +41,7 @@ Before any spec / plan / task write, run:
|
|
|
41
41
|
feinai status 2>/dev/null
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
- Exit code 0:
|
|
44
|
+
- Exit code 0: feinai is active in this project → use this skill.
|
|
45
45
|
- Exit code 2: `No .tasca/tasca.db found` → fall back to vanilla superpowers
|
|
46
46
|
(or ask the user `feinai init` if it seems intended).
|
|
47
47
|
- Command not found: feinai is not installed or not on PATH. Tell the user:
|
|
@@ -96,7 +96,7 @@ FEINAI_EOF
|
|
|
96
96
|
|
|
97
97
|
### What replaces what
|
|
98
98
|
|
|
99
|
-
| Superpowers step |
|
|
99
|
+
| Superpowers step | feinai equivalent |
|
|
100
100
|
|---|---|
|
|
101
101
|
| `Write(docs/superpowers/specs/YYYY-MM-DD-X-design.md, ...)` | `feinai spec add SPEC-NNN "title" --stdin <<<` content |
|
|
102
102
|
| Spec self-review (re-read the markdown) | `feinai spec content SPEC-NNN` (returns the markdown) |
|
|
@@ -169,7 +169,7 @@ single response, the full payload: `description` (workplan), `quality_gates`,
|
|
|
169
169
|
`packages`, `blocked_by`. **The subagent never has to read the plan markdown.**
|
|
170
170
|
|
|
171
171
|
This is the single biggest token saving and the strongest correctness
|
|
172
|
-
guarantee from using
|
|
172
|
+
guarantee from using feinai: each subagent's context contains exactly the task
|
|
173
173
|
it's executing, nothing else.
|
|
174
174
|
|
|
175
175
|
---
|
|
@@ -248,7 +248,7 @@ human-readable rationale; the tasks are the executable state.
|
|
|
248
248
|
|
|
249
249
|
### ❌ Don't create `docs/superpowers/specs/*.md` files
|
|
250
250
|
|
|
251
|
-
If
|
|
251
|
+
If feinai is active, those files become a source of drift. The spec lives in
|
|
252
252
|
the database. If you need to publish the spec elsewhere (PR description, wiki,
|
|
253
253
|
etc.), export it on demand: `feinai spec content SPEC-X > /tmp/spec.md`.
|
|
254
254
|
|
|
@@ -262,9 +262,9 @@ subagents that both `show` then act will collide. Always `feinai take`.
|
|
|
262
262
|
The CLI handles concurrency, audit logging, and validation. Direct SQL
|
|
263
263
|
mutations bypass the events table and leave the audit log incomplete.
|
|
264
264
|
|
|
265
|
-
### ✅ Do set `
|
|
265
|
+
### ✅ Do set `FEINAI_USER` for explicit subagent identity
|
|
266
266
|
|
|
267
|
-
When dispatching a subagent, pass `
|
|
267
|
+
When dispatching a subagent, pass `FEINAI_USER=subagent-N` in its environment
|
|
268
268
|
so the audit log distinguishes which subagent did what. Otherwise the actor
|
|
269
269
|
field will read `bun:<pid>:<user>` for everyone.
|
|
270
270
|
|
|
@@ -294,8 +294,8 @@ field will read `bun:<pid>:<user>` for everyone.
|
|
|
294
294
|
|
|
295
295
|
This skill is **additive**. The superpowers skills (`brainstorming`,
|
|
296
296
|
`writing-plans`, `subagent-driven-development`, etc.) still run; they still
|
|
297
|
-
own the process.
|
|
297
|
+
own the process. feinai only changes the storage of the artifacts they produce.
|
|
298
298
|
|
|
299
|
-
If you start brainstorming and discover the project has no
|
|
299
|
+
If you start brainstorming and discover the project has no feinai DB, fall back
|
|
300
300
|
to the normal superpowers behavior (markdown files). Do not silently switch
|
|
301
301
|
storage strategy mid-project.
|
package/src/cli.ts
CHANGED
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
type OutputFormat,
|
|
49
49
|
} from "./format";
|
|
50
50
|
|
|
51
|
-
const VERSION = "0.5.
|
|
51
|
+
const VERSION = "0.5.7";
|
|
52
52
|
|
|
53
53
|
interface ParsedArgs {
|
|
54
54
|
positional: string[];
|
|
@@ -126,7 +126,7 @@ function detectFormat(args: ParsedArgs): OutputFormat {
|
|
|
126
126
|
* Build a stable identifier for whoever is invoking feina.
|
|
127
127
|
*
|
|
128
128
|
* Priority:
|
|
129
|
-
* 1. $
|
|
129
|
+
* 1. $FEINAI_USER env var (explicit override — used by agents to identify themselves)
|
|
130
130
|
* 2. parent process name (on Linux via /proc/$PPID/comm) → "{parent_name}:{ppid}:{user}"
|
|
131
131
|
* 3. fallback: "{user}@{hostname}"
|
|
132
132
|
*
|
|
@@ -134,7 +134,7 @@ function detectFormat(args: ParsedArgs): OutputFormat {
|
|
|
134
134
|
* from "bash:9999:m" in the events audit log without manual configuration.
|
|
135
135
|
*/
|
|
136
136
|
function getCurrentUser(): string {
|
|
137
|
-
const override = process.env.
|
|
137
|
+
const override = process.env.FEINAI_USER;
|
|
138
138
|
if (override) return override;
|
|
139
139
|
|
|
140
140
|
const username = process.env.USER ?? userInfo().username ?? "unknown";
|
|
@@ -259,7 +259,7 @@ GLOBAL FLAGS:
|
|
|
259
259
|
--version Show version
|
|
260
260
|
|
|
261
261
|
ENV:
|
|
262
|
-
|
|
262
|
+
FEINAI_USER Override owner/actor identity used in audit log
|
|
263
263
|
|
|
264
264
|
\x1b[34m\x1b[1m── Agent Integration ──────────────────────────────────────────────\x1b[0m
|
|
265
265
|
\x1b[36mTeach your AI agents to use \x1b[1mfeina\x1b[0m\x1b[36m as their single source of truth for\x1b[0m
|