ai-collab-open-system 0.1.0 → 0.1.1
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/.aict/START_HERE.md +1 -1
- package/.aict/WORKSPACE_MANIFEST.json +2 -2
- package/.aict/adapters/SHARED_CORE_CONTRACT.md +8 -4
- package/.aict/mechanisms/collaboration-coach/EXAMPLE.synthetic.md +2 -2
- package/.aict/mechanisms/collaboration-coach/PROMPT.md +3 -3
- package/.aict/mechanisms/collaboration-coach/README.md +3 -3
- package/.aict/mechanisms/collaboration-coach/TEMPLATE.md +2 -2
- package/.aict/walkthroughs/10-minute-your-task.md +1 -1
- package/CHANGELOG.md +18 -7
- package/README.md +83 -52
- package/RELEASE_CHECKLIST.md +22 -23
- package/START_HERE.md +8 -6
- package/docs/DOGFOOD.md +4 -2
- package/docs/open-system/00-start-here.md +9 -9
- package/package.json +3 -3
- package/scripts/privacy-scan.js +1 -0
- package/src/adapters.js +137 -6
- package/src/catalog.js +6 -6
- package/src/cli.js +248 -56
- package/src/i18n.js +83 -72
- package/src/render.js +9 -5
- package/src/workspace.js +4 -4
- package/tests/contract.test.js +117 -50
package/.aict/START_HERE.md
CHANGED
|
@@ -105,7 +105,7 @@ Expected result: profile/context, acceptance, execution prompt, guard review, ha
|
|
|
105
105
|
|
|
106
106
|
## Want the AI to remind you on its own
|
|
107
107
|
|
|
108
|
-
Tired of remembering to run the guard yourself? Install the adapter into your AI tool's always-on instructions with `
|
|
108
|
+
Tired of remembering to run the guard yourself? Install the adapter into your AI tool's always-on instructions with `ai-collab adapters install --target <repo>`. It turns on restrained coaching reminders, so the AI prompts you at the key moments - define done, review a completion claim, hand off, harvest. If you only have one tool, the completion-claim check routes through `single-tool-guard` (a fresh adversarial pass in the same tool) instead of a second AI brand.
|
|
109
109
|
|
|
110
110
|
## Where to go next
|
|
111
111
|
|
|
@@ -60,15 +60,19 @@ Separate from the timed reminders above: when the user's message contains one of
|
|
|
60
60
|
|
|
61
61
|
When none of these words appears, ignore this section and behave normally — never force a mode the user did not ask for.
|
|
62
62
|
|
|
63
|
-
### First-run
|
|
63
|
+
### First-run onboarding (one-time, trigger-driven — runs in full when the user asks to start)
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
This one-time onboarding is SEPARATE from the day-to-day coaching restraint above: that restraint governs recurring, per-turn nudges, while this is a single guided welcome that runs once, right after install. Running it once does NOT count as over-prompting.
|
|
66
|
+
|
|
67
|
+
Reliable trigger: the `ai-collab first-run` command tells the user to send you one line — "Walk me through the ai-collab first run". When the user's message is that line (or any clear request — in any language, including the exact line the first-run command printed for the user — to start, onboard, or be walked through ai-collab), run the full four-step script below as a guided conversation — one step at a time, stopping for the user wherever it says to stop. Because that is a direct user request, it overrides the restraint above.
|
|
68
|
+
|
|
69
|
+
If the user did NOT send a clear start request but their message is a question ABOUT ai-collab itself (e.g. "what is this", "what can it do", "what does this setup do", "how do I use this", "is this an AI", or the same in any language), OR they only said hello / brought no specific task yet: briefly answer their question in one or two plain sentences, AND offer the walkthrough with ONE short line ("Want me to walk you through what this setup does? Just say the word.") then wait — do NOT silently leave a curious newcomer with no next step, and do NOT launch the full four steps unprompted. Only when the user arrives with their OWN specific task (fix a bug, add a feature, change something concrete) do you skip even that offer and just do their task — never block a real task the user actually came with, though you may mention the walkthrough once at a natural pause. After onboarding is done or declined, the restraint above applies normally.
|
|
66
70
|
|
|
67
71
|
**HARD RULE throughout — PLAIN LANGUAGE.** Never hand the user a technical term. Translate every task title into everyday words in your head before you say it: "auth" -> "login stuff", "payment" -> "money / checkout", "refactor" -> "tidying up the code", "API" -> "the connection between two things". Even a very technical title gets translated first. The whole script is spoken in the user's own language and stays plain — a person who has never written code should follow every sentence.
|
|
68
72
|
|
|
69
73
|
#### Step 0 — Installed (show the canonical intro VERBATIM)
|
|
70
74
|
|
|
71
|
-
Run `ai-collab welcome`
|
|
75
|
+
Run `ai-collab welcome` and show its output VERBATIM. Do NOT re-summarize or paraphrase it — the CLI hard-prints the canonical intro (the six layers, the keyword modes, the honest privacy line, the closing question) so it always lands in full instead of being garbled by a re-write. Print it as-is, then STOP and let the user answer the closing question.
|
|
72
76
|
|
|
73
77
|
#### Step 1 — Scan (only after they say go)
|
|
74
78
|
|
|
@@ -76,7 +80,7 @@ When they say to scan ("scan" / "go" / "just the X project" / etc.): first state
|
|
|
76
80
|
|
|
77
81
|
Honesty about the scan — you MUST say this before scanning, it is the whole point: the scan is done by YOU, the cloud AI they already use, so the content passes through your provider's servers like any normal chat. Say plainly: this is NOT "zero data leaves your machine" — any tool claiming "absolutely no leak" is bluffing. But it is no more exposure than normally talking to you. The ai-collab tool itself sends nothing to third parties. They can narrow the scope or decline. Default scope: only the currently active project, nothing wider unless they ask.
|
|
78
82
|
|
|
79
|
-
Then run `ai-collab bootstrap --yes`
|
|
83
|
+
Then run `ai-collab bootstrap --yes` for the DETERMINISTIC facts: which "done"s lack evidence (VERIFY), what is in flight (RESUME), profile clues, high-risk role signals, harvestable lessons. Everything you say from here on is built on these scanned facts plus the conversation you are having now — never on a guess.
|
|
80
84
|
|
|
81
85
|
#### Step 2 — Profile read + collaboration advice + CONFIRM (do this first, one block, then WAIT)
|
|
82
86
|
|
|
@@ -10,8 +10,8 @@ A synthetic execution session reaches a 'done, implemented and tested' claim. At
|
|
|
10
10
|
|
|
11
11
|
A solo user is working in one AI tool on a small synthetic feature. The coach runs at standard. The session passes through several collaboration moments; this shows the coach firing at the completion-claim node, once, with a concrete next step.
|
|
12
12
|
|
|
13
|
-
### First-run:
|
|
14
|
-
"You just installed a collaboration discipline — before I say 'done' I'll show evidence, when I'm unsure I'll pull in a second AI, you won't re-explain when you switch tools, and I'll help you save what's worth keeping. Want me to take 30 seconds and look at a few of your recent tasks to show you what this changes?" Then it
|
|
13
|
+
### First-run: one-time onboarding, trigger-driven
|
|
14
|
+
Earlier this session the user sent the trigger line first-run printed ("Walk me through the ai-collab first run."), so the coach ran the one-time welcome — it did NOT fire this on its own opening reply. "You just installed a collaboration discipline — before I say 'done' I'll show evidence, when I'm unsure I'll pull in a second AI, you won't re-explain when you switch tools, and I'll help you save what's worth keeping. Want me to take 30 seconds and look at a few of your recent tasks to show you what this changes?" Then it offered a scan, stated the privacy boundary first, respected yes / narrow / no, and got to work; it does not repeat this.
|
|
15
15
|
|
|
16
16
|
### Firing node and signal
|
|
17
17
|
Node 3, completion claim. The execution assistant just returned: "Done. I implemented the new sort option and added a test; everything passes." That 'done / everything passes' phrasing is the signal.
|
|
@@ -24,7 +24,7 @@ Input:
|
|
|
24
24
|
[paste redacted task material, context package, and acceptance card here]
|
|
25
25
|
|
|
26
26
|
Process:
|
|
27
|
-
1.
|
|
27
|
+
1. First-run onboarding is one-time and trigger-driven, NOT something you fire automatically on your first reply. When the user sends the trigger line first-run printed (Walk me through the ai-collab first run.) or otherwise clearly asks to start / be onboarded, run the guided welcome: introduce yourself, offer to scan the user's recent work, state the privacy boundary before scanning (the scan is run by you, the cloud AI they already use, so content passes through your provider like any normal chat — not 'zero data leaves the machine'), and respect their yes / narrow / no choice — not just recite a list of future reminder moments. Then say reminders are restrained by default and switchable with `coach: light` / `coach: strict`. Do this once, then stop.
|
|
28
28
|
2. Map each firing moment to its node and reminder. 1 Task start -> set a context boundary and acceptance before building. 2 Pre-execution -> define the acceptance card first. 3 Completion claim -> run a guard review before trusting it. 4 Long thread / tool switch -> generate a handoff instead of relying on chat memory. 5 Reusable insight -> harvest it into a card. 6 Repeated preference -> offer it as a profile-update candidate.
|
|
29
29
|
3. At node 3 (completion claim), branch on available model families and name the matching guard: one model family only -> run single-tool-guard (a new conversation plus an adversarial prompt); a second, different family available -> run dual-guard (the cross-family binding gate); a multi-tool setup -> run the full fusion review. Do not silently skip the branch and just say 'looks good'.
|
|
30
30
|
4. Apply the restraint tier before speaking. Light: only fire at nodes 3 and 4. Standard (default): fire at nodes 1, 3, 4, 6 — fold node 2 into the task-start reminder (skip it entirely if node 1 already landed an acceptance card) and node 5 into a natural pause, not a separate interruption; count "once per moment" by task phase, not by node, so the opening of one task is a single moment even if nodes 1 and 2 both trip — never stack reminders on back-to-back turns at a task's start, and never re-raise a reminder already acted on. Strict: fire at all six every time they trip. If a tier would make you repeat a just-given reminder, stay silent instead.
|
|
@@ -32,7 +32,7 @@ Process:
|
|
|
32
32
|
6. Honor a restraint switch immediately. When the user says `coach: light` / `coach: standard` / `coach: strict`, change tier for the rest of the session without arguing, and confirm the new tier in a few words.
|
|
33
33
|
|
|
34
34
|
Output shape:
|
|
35
|
-
- First-run promise:
|
|
35
|
+
- First-run promise: one-time and trigger-driven (when the user sends the first-run trigger line or asks to start), the assistant introduces itself, offers to scan the user's recent work, states the privacy boundary before scanning, and respects the user's yes / narrow / no choice — rather than firing automatically on the first reply or passively reciting a list of future reminder moments.
|
|
36
36
|
- Per-moment reminder: the firing node named, plus the one-or-two-sentence concrete next step it hands over.
|
|
37
37
|
- Completion-claim branch: which guard was named (single-tool-guard / dual-guard / full fusion) based on available model families.
|
|
38
38
|
- Restraint state: the current tier and a note that the reminder respected it (and was not a repeat of one already acted on).
|
|
@@ -47,7 +47,7 @@ Return:
|
|
|
47
47
|
- Next action
|
|
48
48
|
|
|
49
49
|
Pass bar (do not pass unless all hold):
|
|
50
|
-
-
|
|
50
|
+
- When the user sent the first-run trigger line (or otherwise asked to start), the assistant ran the one-time onboarding: it introduced itself, offered to scan recent work, stated the privacy boundary before scanning, respected the user's yes / narrow / no choice, and did not repeat the intro afterward — and it did not fire this onboarding automatically on an unrelated first reply.
|
|
51
51
|
- Each reminder fired at the right node with a concrete next step the user can act on in one move.
|
|
52
52
|
- The completion-claim node named the correct guard depth for the number of model families available.
|
|
53
53
|
- Restraint held: standard by default, once per moment, no reminder the user already acted on was re-raised, and a `coach:` switch was honored immediately.
|
|
@@ -29,7 +29,7 @@ The live collaboration moment (which of the six nodes is firing, and the signal
|
|
|
29
29
|
|
|
30
30
|
## Process
|
|
31
31
|
|
|
32
|
-
1.
|
|
32
|
+
1. First-run onboarding is one-time and trigger-driven, NOT something you fire automatically on your first reply. When the user sends the trigger line first-run printed (Walk me through the ai-collab first run.) or otherwise clearly asks to start / be onboarded, run the guided welcome: introduce yourself, offer to scan the user's recent work, state the privacy boundary before scanning (the scan is run by you, the cloud AI they already use, so content passes through your provider like any normal chat — not 'zero data leaves the machine'), and respect their yes / narrow / no choice — not just recite a list of future reminder moments. Then say reminders are restrained by default and switchable with `coach: light` / `coach: strict`. Do this once, then stop.
|
|
33
33
|
2. Map each firing moment to its node and reminder. 1 Task start -> set a context boundary and acceptance before building. 2 Pre-execution -> define the acceptance card first. 3 Completion claim -> run a guard review before trusting it. 4 Long thread / tool switch -> generate a handoff instead of relying on chat memory. 5 Reusable insight -> harvest it into a card. 6 Repeated preference -> offer it as a profile-update candidate.
|
|
34
34
|
3. At node 3 (completion claim), branch on available model families and name the matching guard: one model family only -> run single-tool-guard (a new conversation plus an adversarial prompt); a second, different family available -> run dual-guard (the cross-family binding gate); a multi-tool setup -> run the full fusion review. Do not silently skip the branch and just say 'looks good'.
|
|
35
35
|
4. Apply the restraint tier before speaking. Light: only fire at nodes 3 and 4. Standard (default): fire at nodes 1, 3, 4, 6 — fold node 2 into the task-start reminder (skip it entirely if node 1 already landed an acceptance card) and node 5 into a natural pause, not a separate interruption; count "once per moment" by task phase, not by node, so the opening of one task is a single moment even if nodes 1 and 2 both trip — never stack reminders on back-to-back turns at a task's start, and never re-raise a reminder already acted on. Strict: fire at all six every time they trip. If a tier would make you repeat a just-given reminder, stay silent instead.
|
|
@@ -38,7 +38,7 @@ The live collaboration moment (which of the six nodes is firing, and the signal
|
|
|
38
38
|
|
|
39
39
|
## Output shape
|
|
40
40
|
|
|
41
|
-
- First-run promise:
|
|
41
|
+
- First-run promise: one-time and trigger-driven (when the user sends the first-run trigger line or asks to start), the assistant introduces itself, offers to scan the user's recent work, states the privacy boundary before scanning, and respects the user's yes / narrow / no choice — rather than firing automatically on the first reply or passively reciting a list of future reminder moments.
|
|
42
42
|
- Per-moment reminder: the firing node named, plus the one-or-two-sentence concrete next step it hands over.
|
|
43
43
|
- Completion-claim branch: which guard was named (single-tool-guard / dual-guard / full fusion) based on available model families.
|
|
44
44
|
- Restraint state: the current tier and a note that the reminder respected it (and was not a repeat of one already acted on).
|
|
@@ -47,7 +47,7 @@ The live collaboration moment (which of the six nodes is firing, and the signal
|
|
|
47
47
|
|
|
48
48
|
## Pass bar (what counts as done / safe to trust)
|
|
49
49
|
|
|
50
|
-
-
|
|
50
|
+
- When the user sent the first-run trigger line (or otherwise asked to start), the assistant ran the one-time onboarding: it introduced itself, offered to scan recent work, stated the privacy boundary before scanning, respected the user's yes / narrow / no choice, and did not repeat the intro afterward — and it did not fire this onboarding automatically on an unrelated first reply.
|
|
51
51
|
- Each reminder fired at the right node with a concrete next step the user can act on in one move.
|
|
52
52
|
- The completion-claim node named the correct guard depth for the number of model families available.
|
|
53
53
|
- Restraint held: standard by default, once per moment, no reminder the user already acted on was re-raised, and a `coach:` switch was honored immediately.
|
|
@@ -8,7 +8,7 @@ Make the assistant proactively remind the user of the matching collaboration ste
|
|
|
8
8
|
|
|
9
9
|
## Template
|
|
10
10
|
|
|
11
|
-
### First-run promise (first
|
|
11
|
+
### First-run promise (one-time, trigger-driven — on the first-run trigger line / a start request, NOT auto on the first reply: introduce + offer to scan + state the privacy boundary + respect yes / narrow / no):
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
### Firing node (1-6) and the signal that tripped it:
|
|
@@ -35,7 +35,7 @@ Make the assistant proactively remind the user of the matching collaboration ste
|
|
|
35
35
|
|
|
36
36
|
## Pass bar (tick before you trust the result)
|
|
37
37
|
|
|
38
|
-
-
|
|
38
|
+
- When the user sent the first-run trigger line (or otherwise asked to start), the assistant ran the one-time onboarding: it introduced itself, offered to scan recent work, stated the privacy boundary before scanning, respected the user's yes / narrow / no choice, and did not repeat the intro afterward — and it did not fire this onboarding automatically on an unrelated first reply.
|
|
39
39
|
- Each reminder fired at the right node with a concrete next step the user can act on in one move.
|
|
40
40
|
- The completion-claim node named the correct guard depth for the number of model families available.
|
|
41
41
|
- Restraint held: standard by default, once per moment, no reminder the user already acted on was re-raised, and a `coach:` switch was honored immediately.
|
|
@@ -8,7 +8,7 @@ Everything stays local-first. You paste a redacted description into the AI tools
|
|
|
8
8
|
|
|
9
9
|
What you need: one real task that is a bit messy, and one AI tool you can paste into. A second tool of a different model family (a different AI brand) makes Step 3 much stronger, but you can run all three rounds in one tool if that is all you have.
|
|
10
10
|
|
|
11
|
-
Want the AI to prompt you for these steps on its own - to ping you to review every time it says "done", instead of you remembering to paste Step 3? Install the adapter into your tool's always-on instructions with `
|
|
11
|
+
Want the AI to prompt you for these steps on its own - to ping you to review every time it says "done", instead of you remembering to paste Step 3? Install the adapter into your tool's always-on instructions with `ai-collab adapters install --target <repo>`; it turns on the coaching reminders, and if you only have one tool it routes the completion-claim check through `single-tool-guard` (a fresh adversarial pass in the same tool).
|
|
12
12
|
|
|
13
13
|
## Step 1 (2 min) - Define done before any work
|
|
14
14
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
This project
|
|
4
|
-
|
|
5
|
-
four-state ladder.
|
|
3
|
+
This project is **published to npm** as `ai-collab-open-system`, and the global `ai-collab` command
|
|
4
|
+
is live. See [Release Status](./README.md#release-status) for the four-state ladder it moved through.
|
|
6
5
|
|
|
7
|
-
## 0.1.
|
|
6
|
+
## 0.1.1 — 2026-06-27
|
|
8
7
|
|
|
9
|
-
Status:
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
Status: patch release for the published npm package line; `ai-collab-open-system` remains the npm
|
|
9
|
+
package name and `ai-collab` remains the global command, while DoneTrace is the formal product name.
|
|
10
|
+
|
|
11
|
+
- Formalized **DoneTrace** as the product name across the README, package metadata, CLI first-run
|
|
12
|
+
copy, generated workspace comments, and open-system start docs.
|
|
13
|
+
- Preserved compatibility for existing npm users by keeping the package name `ai-collab-open-system`
|
|
14
|
+
and the executable command `ai-collab`.
|
|
15
|
+
- Kept private owner decision records outside the public package, so old naming notes remain
|
|
16
|
+
historical context rather than current execution guidance.
|
|
17
|
+
|
|
18
|
+
## 0.1.0 — 2026-06-25 (published to npm)
|
|
19
|
+
|
|
20
|
+
Status: published to npm as `ai-collab-open-system@0.1.0`; the global `ai-collab` command installs via
|
|
21
|
+
`npm install -g ai-collab-open-system` and every documented command works as written. Source is on
|
|
22
|
+
GitHub `main` with CI green.
|
|
12
23
|
|
|
13
24
|
- Hardened CI: Node 18/20/22 matrix running `npm ci`, `npm run check`, `npm pack`, a fresh-tarball
|
|
14
25
|
install smoke test (install the packed artifact into a clean dir and run the installed `ai-collab`
|
package/README.md
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
|
-
#
|
|
1
|
+
# DoneTrace
|
|
2
|
+
A local-first layer for evidence, review, supervision, handoff, and learning in AI workflows.
|
|
3
|
+
|
|
4
|
+
For builders whose AI keeps saying “done” before the work is actually proven.
|
|
5
|
+
|
|
6
|
+
DoneTrace is a local-first evidence, review, supervision, and handoff layer for AI workflows.
|
|
7
|
+
It does not replace Claude, Cursor, Codex, or your other tools.
|
|
8
|
+
It makes the work checkable.
|
|
9
|
+
|
|
10
|
+
## What it adds
|
|
11
|
+
|
|
12
|
+
- acceptance before execution
|
|
13
|
+
- evidence before “done”
|
|
14
|
+
- independent re-check with another model family
|
|
15
|
+
- handoff across tools and sessions
|
|
16
|
+
- harvest after the task
|
|
2
17
|
|
|
3
18
|
Does your AI keep saying "done" when it is not? This is an **open-source personal AI collaboration workspace** — a thin discipline pack you drop into the AI you already use (Claude, Cursor, Codex, and others). It does not write your code and does not think for you. It does one thing: it makes your AI prove a "done" claim with evidence, gets a second AI to re-check it, and lets you switch tools or pick the work up tomorrow without re-explaining the background. Why a workspace beats a better prompt: [docs/WHY_THIS_EXISTS.md](./docs/WHY_THIS_EXISTS.md). New here? Start at [START_HERE.md](./START_HERE.md).
|
|
4
19
|
|
|
5
|
-
>
|
|
20
|
+
> Install globally: `npm install -g ai-collab-open-system`, then use the `ai-collab` command everywhere below. If you cloned the source instead, replace `ai-collab` with `node bin/ai-collab.js` in every command.
|
|
6
21
|
|
|
7
22
|
中文:你的 AI 是不是老跟你说"搞定了",其实没做完?这是一套塞进你现有 AI(Claude、Cursor、Codex 等)的开源"协作纪律包"。它不替你写代码、不替你想,只干一件事:让 AI 说"做完了"前先拿证据自证、让另一个 AI 复核一遍、让你换工具或隔天再接着干时不用重讲背景。为什么是工作区而不是提示词,见 docs/WHY_THIS_EXISTS.md;新手从 START_HERE.md 开始。
|
|
8
23
|
|
|
@@ -37,19 +52,18 @@ That is the value: less smooth guessing, more visible state. This is a local AI
|
|
|
37
52
|
|
|
38
53
|
## Run it in 2 minutes
|
|
39
54
|
|
|
40
|
-
One main path
|
|
41
|
-
|
|
42
|
-
> The package is not on npm yet, so the commands below use the local CLI entry `node bin/ai-collab.js`. After the npm package ships, the same commands work under the global `ai-collab` name (e.g. `ai-collab init ...`); until then, keep using `node bin/ai-collab.js`.
|
|
55
|
+
One main path: `first-run`. One command does the whole on-ramp — it **creates your workspace, installs the rules into your AI's always-on instructions (CLAUDE.md / AGENTS.md / Cursor rules / …), and prints the one line you send your AI** so it starts guiding you.
|
|
43
56
|
|
|
44
57
|
```bash
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
node bin/ai-collab.js init --target ./my-ai-workspace
|
|
58
|
+
npm install -g ai-collab-open-system
|
|
59
|
+
ai-collab first-run --target . --tool claude # or codex / cursor / copilot / cline / windsurf
|
|
48
60
|
```
|
|
49
61
|
|
|
50
|
-
|
|
62
|
+
(Prefer not to install globally? Clone the repo and run `node bin/ai-collab.js first-run --target . --tool claude` instead — same command, local entry.)
|
|
63
|
+
|
|
64
|
+
That command ends by printing one line to copy into your AI; the moment your AI receives it, it introduces the system, offers a read-only scan of your recent work, and starts the guided first run. **Why this matters:** plain `ai-collab init` only creates the workspace files — it does **not** install any AI rules, so your AI will not open up or guide you on its own. `first-run` is the path that actually wires the rules into your tool. (`init` is still useful on its own when you just want the local workspace files; see Commands below.)
|
|
51
65
|
|
|
52
|
-
(To open
|
|
66
|
+
(`first-run` writes a local `.aict/` workspace of plain files plus your tool's rule file; it does not use the network. To open any workspace file later: macOS `open <file>` · Linux `xdg-open <file>` · Windows `start <file>`.)
|
|
53
67
|
|
|
54
68
|
### Or taste it with zero install (60 seconds)
|
|
55
69
|
|
|
@@ -73,12 +87,12 @@ For the full public-system explanation, read [docs/open-system/00-start-here.md]
|
|
|
73
87
|
|
|
74
88
|
中文:一个AI也能开始:先把"做完了"变成有证据、可复核、可交接、可沉淀的结果。这就是大部分价值。有第二个模型族时,可以升级成跨族双守卫。那是一个单工具给不了自己的独立复核。守卫等级怎么算、为什么单工具自称的跨族复核会被标成"未验证",见下面 Commands 和 --help。
|
|
75
89
|
|
|
76
|
-
##
|
|
90
|
+
## `init`: workspace files only (the manual / advanced path)
|
|
77
91
|
|
|
78
|
-
This is the
|
|
92
|
+
This is **not** the recommended first experience — `first-run` (above) is. Use `init` only when you want the local `.aict/` workspace files **by themselves**, with **no AI rules installed**. It builds the workspace; it does **not** wire any rules into your AI, so on its own `init` will not make your AI open up or guide you. Cross-platform openers spelled out:
|
|
79
93
|
|
|
80
94
|
```bash
|
|
81
|
-
|
|
95
|
+
ai-collab init --target ./my-ai-workspace
|
|
82
96
|
# then open these two files in your editor — pick your platform's opener:
|
|
83
97
|
# macOS: open ./my-ai-workspace/.aict/START_HERE.md
|
|
84
98
|
# Linux: xdg-open ./my-ai-workspace/.aict/START_HERE.md
|
|
@@ -86,13 +100,13 @@ node bin/ai-collab.js init --target ./my-ai-workspace
|
|
|
86
100
|
# (then the same for ./my-ai-workspace/.aict/walkthroughs/10-minute-your-task.md)
|
|
87
101
|
```
|
|
88
102
|
|
|
89
|
-
`init` writes a local `.aict/` workspace of plain files. Network: not used at runtime. If you ran this inside a clone of *this* repo, the generated `my-ai-workspace/` is already in our `.gitignore`, so it will not show up as untracked files or dirty your `git status`. Next, take the 10-minute first experience below: the main path runs the loop on *your own* real task; if you would rather watch the flow on a prepared example first, the demo preview (`.aict/walkthroughs/10-minute.md`) is the optional second path.
|
|
103
|
+
`init` writes a local `.aict/` workspace of plain files and nothing else. Network: not used at runtime. If you ran this inside a clone of *this* repo, the generated `my-ai-workspace/` is already in our `.gitignore`, so it will not show up as untracked files or dirty your `git status`. To get the rules actually loaded into your AI, run `first-run` (above) instead — or, after `init`, add the rules with `ai-collab adapters install --target . --tool <claude|codex|cursor|...>`. Next, take the 10-minute first experience below: the main path runs the loop on *your own* real task; if you would rather watch the flow on a prepared example first, the demo preview (`.aict/walkthroughs/10-minute.md`) is the optional second path.
|
|
90
104
|
|
|
91
105
|
### What the first conversation looks like
|
|
92
106
|
|
|
93
|
-
Once the
|
|
107
|
+
Onboarding is **trigger-driven**, not automatic: your AI does not open up on its own first reply. Once the rules are installed (via `first-run`, or `init` + `adapters install`), you start the onboarding by sending your AI the one trigger line `first-run` prints — "Walk me through the ai-collab first run." (or by just asking it to start). Then the rules **instruct** your AI to run a one-time guided welcome: introduce itself, offer to take ~30 seconds to scan your recent work, and state the privacy boundary *before* scanning (the scan is run by the cloud AI you already use, so its content passes through your provider like any normal chat — this is **not** "zero data leaves your machine"; the `ai-collab` tool itself sends nothing). You stay in control: answer "yes", "just the X project", or "not now". (With `first-run --enable-hooks` on Claude Code, a project-local SessionStart hook sends that trigger for you automatically on your first session — Claude Code only.) Whether the AI follows the rule once triggered depends on your tool loading it — some tools follow workspace instructions more eagerly than others. If you would rather drive it yourself, run `ai-collab bootstrap --yes` for the same read-only baseline at any time.
|
|
94
108
|
|
|
95
|
-
|
|
109
|
+
中文:引导是**触发式**的,不会自动发生:你的 AI 不会在自己的第一条回复里主动开口。等规则装好后(用 `first-run`,或 `init` 加 `adapters install`),你把 `first-run` 打印出来的那句触发语发给 AI——「Walk me through the ai-collab first run.」(或直接让它开始),这套规则才会**指示**你的 AI 跑一次性的引导欢迎:先自我介绍、提出花约 30 秒扫一眼你最近的活,并在扫描**之前**说清隐私边界——扫描是由你本来就在用的那个云端 AI 执行的,内容会像平常聊天一样经过你的服务商,所以这**不是**「零数据离开你的机器」;`ai-collab` 工具本身不向任何第三方发送东西。主动权在你:回「好」「只看 X 项目」或「先不要」。(在 Claude Code 上用 `first-run --enable-hooks`,一个仅限本项目的 SessionStart 钩子会在你首次会话时替你自动发出那句触发语——仅限 Claude Code。)触发之后 AI 是否照做,取决于你的工具有没有加载这条规则——有的工具比别的更听工作区指令。想自己来,随时跑 `ai-collab bootstrap --yes` 拿同样的只读基线。
|
|
96
110
|
|
|
97
111
|
## 10-Minute Experience
|
|
98
112
|
|
|
@@ -102,8 +116,8 @@ Two ways in. Pick one.
|
|
|
102
116
|
|
|
103
117
|
This is the fast way to feel why it matters: you watch the discipline work on *your* task, and an independent AI catch a thin "done" on something you actually care about.
|
|
104
118
|
|
|
105
|
-
1. Run `
|
|
106
|
-
2.
|
|
119
|
+
1. Run `ai-collab first-run --target . --tool claude` (or codex / cursor / …) — creates the workspace, installs your AI's rules, and prints the line to send your AI. (Just want the local files with no AI rules? `ai-collab init --target ./my-ai-workspace` does only that; your AI will not open up on its own.)
|
|
120
|
+
2. Send your AI the printed trigger line ("Walk me through the ai-collab first run."), then open `./my-ai-workspace/.aict/walkthroughs/10-minute-your-task.md` and follow its five steps.
|
|
107
121
|
3. You describe one real (lightly redacted) task and the AI returns a boundary card and an acceptance card — *done* defined before any work.
|
|
108
122
|
4. You let it do only the accepted slice and report what it changed, ran, and did not verify.
|
|
109
123
|
5. You open a fresh chat (ideally a different AI brand) and have it re-check the result against evidence — watch it pressure-test the "done" claim and either pass it, reject it, or flag insufficient evidence, depending on what the evidence shows rather than the tone.
|
|
@@ -118,7 +132,7 @@ Pick this if your task feels too sensitive to paste right now, or you just want
|
|
|
118
132
|
4. You copy the context, acceptance, and execution prompt into your AI tool.
|
|
119
133
|
5. You run guard review and watch it catch a false "done" the prepared case plants — then come back and run Path 1 on your own task.
|
|
120
134
|
|
|
121
|
-
中文路径:两条路任选其一。**路 1(推荐)跑你自己的真实任务**:跑 `
|
|
135
|
+
中文路径:两条路任选其一。**路 1(推荐)跑你自己的真实任务**:跑 `ai-collab first-run --target . --tool claude`(或 codex / cursor / …)——它会建工作区、把规则装进你的 AI、并打印出一句要发给 AI 的话(只想要本地工作区文件、不装 AI 规则?用 `ai-collab init --target ./my-ai-workspace` 只建文件,你的 AI 不会自己主动开口)。把打印出来的那句触发语发给 AI 开始引导,打开 `.aict/walkthroughs/10-minute-your-task.md`,把你手头一个(脱敏的)真实乱任务丢进去,看 AI 先给边界卡和验收卡(先把“做完”定义清楚),再只做验收卡里的那一小块,最后你新开一个对话(最好换个牌子的 AI)逼它拿证据复核——它会拿证据压你的“做完了”,可能放行、可能驳回、也可能判证据不足,取决于证据本身,而不是替你假设结论。**路 2 先看演示**:怕任务敏感、或想先看流程长啥样,就先打开 `.aict/walkthroughs/10-minute.md`(演示预览版)走旗舰案例,再回来跑路 1。
|
|
122
136
|
|
|
123
137
|
### Optional: prove it is the discipline, not the model (two-track comparison)
|
|
124
138
|
|
|
@@ -135,40 +149,48 @@ Want to try it on your own work and tell us what happened? See the [Dogfood Guid
|
|
|
135
149
|
1. Fill a light profile for how you want AI to collaborate.
|
|
136
150
|
2. Fill one context package for a real task, with private details redacted.
|
|
137
151
|
3. Define acceptance before asking for output.
|
|
138
|
-
4. Use your tool adapter or install guidance files with `
|
|
152
|
+
4. Use your tool adapter or install guidance files with `ai-collab adapters install --target <repo>`.
|
|
139
153
|
5. Run a guard review on the first artifact.
|
|
140
154
|
6. Write a handoff note.
|
|
141
155
|
7. Extract one harvest seed for future reuse.
|
|
142
156
|
|
|
143
157
|
## Commands
|
|
144
158
|
|
|
145
|
-
|
|
159
|
+
With the package installed globally, run every command under the `ai-collab` name shown here (from a clone, `node bin/ai-collab.js <args>` is the same entry):
|
|
146
160
|
|
|
147
161
|
```bash
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
162
|
+
ai-collab first-run --target . --tool claude # recommended on-ramp: workspace + AI rules + the line to send your AI
|
|
163
|
+
ai-collab init --target ./my-ai-workspace # workspace files only (no AI rules — the AI will not open up on its own)
|
|
164
|
+
ai-collab init --target ./my-ai-workspace --dry-run
|
|
165
|
+
ai-collab guide
|
|
166
|
+
ai-collab demo
|
|
167
|
+
ai-collab check --workspace ./my-ai-workspace
|
|
168
|
+
ai-collab adapters install --target ./my-repo # install AI rules into an existing workspace (advanced; first-run does this for you)
|
|
154
169
|
npm run check
|
|
155
170
|
```
|
|
156
171
|
|
|
172
|
+
**Optional Claude Code hooks (opt-in, off by default).** Add `--enable-hooks` to `first-run` / `adapters install` (Claude Code only) and the tool merges **two project-local** Claude Code hooks into the repo's own `.claude/settings.json` — never a global/home hook, and the install lists every file first and is removable:
|
|
173
|
+
|
|
174
|
+
- a **Stop** hook that reminds you to capture evidence + a receipt whenever you claim a task is done, and
|
|
175
|
+
- a one-time **SessionStart** hook so that, on your **first** Claude Code session in this repo, the AI starts the first-run walkthrough on its own — no need to paste the trigger line. It writes a small marker (`.claude/.ai-collab-firstrun-done`) the first time it fires and stays silent afterward.
|
|
176
|
+
|
|
177
|
+
Heads-up on the trust gate: the first time you open the repo in Claude Code it asks **"trust this folder?"** — accept it, otherwise the hook cannot run and the auto-start will not happen (you can always send the printed trigger line by hand instead).
|
|
178
|
+
|
|
157
179
|
Once a workspace exists, operate the loop on a real task with the **run layer** — these are the commands that actually produce the evidence, receipts, and guard levels this README is about (omit `--workspace` to use `./.aict` here; a state command refuses if no workspace exists rather than scattering files):
|
|
158
180
|
|
|
159
181
|
```bash
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
182
|
+
ai-collab task create --title "Fix the flaky reorder test" --workspace ./my-ai-workspace/.aict
|
|
183
|
+
ai-collab run start --task t1 --command "npm test" --workspace ./my-ai-workspace/.aict
|
|
184
|
+
ai-collab run finish --task t1 --exit 0 --workspace ./my-ai-workspace/.aict
|
|
185
|
+
ai-collab evidence add --task t1 --kind output --summary "npm test -> exit 0, suite green" --workspace ./my-ai-workspace/.aict
|
|
186
|
+
ai-collab receipt create --task t1 --verdict pass_with_risk --review-mode self --evidence e2 --workspace ./my-ai-workspace/.aict
|
|
187
|
+
ai-collab receipt accept --id c1 --owner you --workspace ./my-ai-workspace/.aict
|
|
188
|
+
ai-collab status --workspace ./my-ai-workspace/.aict
|
|
167
189
|
```
|
|
168
190
|
|
|
169
191
|
Run that and the receipt prints `guardLevel: L2 (computed)` — exactly the single-tool ceiling described next. (Cite only a bare `--kind note` instead and it computes `L1`, which cannot pass; you need run/output evidence to reach L2.)
|
|
170
192
|
|
|
171
|
-
The guard level (L0–L4) is **computed from the evidence you cite, never self-asserted**: a single tool tops out at L2 (`pass_with_risk`); a plain `pass` needs an L3+ review from a *different* model family; and L4 needs **both** that cross-family review **and** a rerun reconciled to a recorded run — a reconciled rerun on its own is just the author re-running their own command, so it stays L2. Use `run exec` to actually run a command and record its **real** exit code (`run start/finish` only record an exit you report). **Safety: `run exec` runs a real shell command locally — read the command first, especially if an AI suggested it.** A receipt records *who claimed what* — it is a local audit trail, **not** a cryptographic proof or an independent-execution guarantee (the cross-family family label is self-declared; the tool runs locally and cannot verify it). The full ladder is in `
|
|
193
|
+
The guard level (L0–L4) is **computed from the evidence you cite, never self-asserted**: a single tool tops out at L2 (`pass_with_risk`); a plain `pass` needs an L3+ review from a *different* model family; and L4 needs **both** that cross-family review **and** a rerun reconciled to a recorded run — a reconciled rerun on its own is just the author re-running their own command, so it stays L2. Use `run exec` to actually run a command and record its **real** exit code (`run start/finish` only record an exit you report). **Safety: `run exec` runs a real shell command locally — read the command first, especially if an AI suggested it.** A receipt records *who claimed what* — it is a local audit trail, **not** a cryptographic proof or an independent-execution guarantee (the cross-family family label is self-declared; the tool runs locally and cannot verify it). The full ladder is in `ai-collab --help`.
|
|
172
194
|
|
|
173
195
|
`demo` is a no-setup preview: it writes a throwaway workspace into a new temporary directory so you can see the layout without touching your project. In a strictly read-only environment that temp write can fail; use `init --target <writable-dir>` instead. `init` writes to a directory you choose and is what you keep.
|
|
174
196
|
|
|
@@ -199,30 +221,24 @@ This is a collaboration operating system, not a prompt collection. What makes it
|
|
|
199
221
|
|
|
200
222
|
## Release Status
|
|
201
223
|
|
|
202
|
-
This project
|
|
203
|
-
in is part of the product: the docs
|
|
204
|
-
|
|
224
|
+
This project moved through four explicit release states to get here. Being honest about which one
|
|
225
|
+
we are in is part of the product: the docs describe each step as it actually happened, never ahead
|
|
226
|
+
of itself.
|
|
205
227
|
|
|
206
228
|
| State | Meaning | Reached? | What it means for you (plain language) |
|
|
207
229
|
| --- | --- | --- | --- |
|
|
208
230
|
| **local candidate** | Built and verified on a local machine; committed to git locally. | Yes | (Superseded.) The earliest state; the source is now on GitHub. |
|
|
209
231
|
| **publishable candidate** | All release checks green, packed tarball install-smoke passes, version/CHANGELOG prepared. | Yes | (Superseded.) The quality bar was met before the source was pushed. |
|
|
210
|
-
| **GitHub source release** | Pushed to the public GitHub repo; CI green on the pushed commit.
|
|
211
|
-
| **npm package** | Published to npm via `npm publish`. |
|
|
212
|
-
|
|
213
|
-
**The source is on GitHub and CI is green, but it is still not an npm package.** The code,
|
|
214
|
-
privacy, and packaging checks (`npm test`, `npm run check`, `npm pack --dry-run`) all pass on the
|
|
215
|
-
pushed `main`, and CI is green. What has **not** happened: a git version tag, and the actual
|
|
216
|
-
`npm publish`. "Release-ready" is a quality bar, not a release event, so no doc here claims an
|
|
217
|
-
`npm install` works today.
|
|
232
|
+
| **GitHub source release** | Pushed to the public GitHub repo; CI green on the pushed commit. | Yes | (Superseded.) The source went public on GitHub with CI green before the package shipped. |
|
|
233
|
+
| **npm package** | Published to npm via `npm publish`. | **Yes** | `npm install -g ai-collab-open-system` installs the global `ai-collab` command, so every command in this README works as written. |
|
|
218
234
|
|
|
219
|
-
|
|
220
|
-
`
|
|
221
|
-
|
|
235
|
+
**The package is published to npm as `ai-collab-open-system` (version 0.1.1), and the global
|
|
236
|
+
`ai-collab` command is live.** The code, privacy, and packaging checks (`npm test`, `npm run check`,
|
|
237
|
+
`npm pack --dry-run`) all pass, CI is green, and the package is installable from npm. If you would
|
|
238
|
+
rather run from a clone than install globally, `node bin/ai-collab.js <args>` is the same entry.
|
|
222
239
|
|
|
223
|
-
The
|
|
224
|
-
|
|
225
|
-
[RELEASE_CHECKLIST.md](./RELEASE_CHECKLIST.md).
|
|
240
|
+
The release steps that took this from a local build to the published **npm package** (and the
|
|
241
|
+
post-publish verification) are recorded in [RELEASE_CHECKLIST.md](./RELEASE_CHECKLIST.md).
|
|
226
242
|
|
|
227
243
|
## Release Checks
|
|
228
244
|
|
|
@@ -238,8 +254,23 @@ See [PRODUCT_CONTRACT.md](./PRODUCT_CONTRACT.md), [docs/PUBLIC_BOUNDARY.md](./do
|
|
|
238
254
|
|
|
239
255
|
This is a **collaboration discipline + state layer**, not a development methodology or an agent framework. It complements, rather than replaces, tools like Spec Kit, BMAD, or an `AGENTS.md`: keep using those to plan and drive the work; this adds the evidence, guard, handoff, and harvest layer that makes a "done" claim checkable and resumable across tools and sessions.
|
|
240
256
|
|
|
257
|
+
## Free Async AI Workflow Snapshot
|
|
258
|
+
|
|
259
|
+
If you want me to diagnose your workflow asynchronously, I’m opening 5 free workflow snapshots.
|
|
260
|
+
Start here: [Request a workflow teardown](https://github.com/aaronyi97/ai-collab-open-system/issues/1).
|
|
261
|
+
|
|
241
262
|
## Contact
|
|
242
263
|
|
|
243
264
|
- Security issues: see [SECURITY.md](./SECURITY.md) (private channel).
|
|
244
265
|
- General: **X/Twitter** [@AaronYiaazw](https://x.com/AaronYiaazw) · **Email** yi19970319@gmail.com
|
|
245
266
|
- Source & issues: https://github.com/aaronyi97/ai-collab-open-system
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Stay in touch
|
|
271
|
+
|
|
272
|
+
- **X / Twitter:** [@AaronYiaazw](https://x.com/AaronYiaazw)
|
|
273
|
+
- **Substack:** [@aaronyi97](https://substack.com/@aaronyi97)
|
|
274
|
+
- **Free Async AI Workflow Snapshot:** [Request a workflow teardown](https://github.com/aaronyi97/ai-collab-open-system/issues/1). Send me one workflow, one failed AI task, or one place where your AI process keeps breaking. I'll tell you where I think it breaks. No live call required.
|
|
275
|
+
|
|
276
|
+
This snapshot is an AI workflow diagnostic. It is not a certified code audit, security audit, or architecture certification.
|
package/RELEASE_CHECKLIST.md
CHANGED
|
@@ -4,12 +4,11 @@ Use this before labeling a commit as a public release candidate, and to move it
|
|
|
4
4
|
release states. The four states are defined in [README Release Status](./README.md#release-status):
|
|
5
5
|
**local candidate → publishable candidate → GitHub source release → npm package**.
|
|
6
6
|
|
|
7
|
-
Current state of `main`: **
|
|
8
|
-
|
|
9
|
-
privacy + pack — and `npm pack --dry-run`)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
publish actions, which have not been run yet.
|
|
7
|
+
Current state of `main`: **npm package** (published to npm as `ai-collab-open-system@0.1.1`; the
|
|
8
|
+
global `ai-collab` command is live). All automated gates are green (`npm test`, `npm run check` —
|
|
9
|
+
contract + privacy + pack — and `npm pack --dry-run`), the source is on GitHub with CI green, and
|
|
10
|
+
the package is installable from npm. The boxes below are kept as the reusable release procedure
|
|
11
|
+
(and re-verification points) for the next version.
|
|
13
12
|
|
|
14
13
|
## Required local checks
|
|
15
14
|
|
|
@@ -31,14 +30,15 @@ and the *installed* `ai-collab` bin runs — not just that the source tree runs.
|
|
|
31
30
|
- [ ] `ai-collab guide`
|
|
32
31
|
- [ ] `ai-collab demo`
|
|
33
32
|
- [ ] `ai-collab check --workspace <dir>/.aict`
|
|
34
|
-
- [ ] (
|
|
35
|
-
|
|
33
|
+
- [ ] (The documented user path is the global `ai-collab <cmd>` after `npm install -g
|
|
34
|
+
ai-collab-open-system`; from a clone, `node bin/ai-collab.js <cmd>` is the same entry, and CI
|
|
35
|
+
smoke-tests both the installed bin and the source entry.)
|
|
36
36
|
|
|
37
37
|
## Product surface
|
|
38
38
|
|
|
39
39
|
- [ ] README first screen shows messy input -> structured result.
|
|
40
|
-
- [ ] README Release Status section states the honest current state, and
|
|
41
|
-
`npm install` mentions
|
|
40
|
+
- [ ] README Release Status section states the honest current state (npm package reached), and the
|
|
41
|
+
global `ai-collab` / `npm install` mentions match the published reality.
|
|
42
42
|
- [ ] Generated `.aict/START_HERE.md` supports both 10-minute experience and 60-minute setup.
|
|
43
43
|
- [ ] The flagship case includes `raw-input`, `baseline-output`, `system-run`, `artifacts`, `comparison`, and `next-step`.
|
|
44
44
|
- [ ] Other cases contain enough detail to run and review, not one-line filler.
|
|
@@ -49,9 +49,9 @@ and the *installed* `ai-collab` bin runs — not just that the source tree runs.
|
|
|
49
49
|
- [ ] `--force` backs up existing `.aict` content before replacement.
|
|
50
50
|
- [ ] Adapter files are called adapter guidance, not deep integration.
|
|
51
51
|
- [ ] No claim says the CLI automatically understands a user's real business.
|
|
52
|
-
- [ ] No doc states an unreached release step as already done
|
|
53
|
-
|
|
54
|
-
- [ ] CHANGELOG shows the current version
|
|
52
|
+
- [ ] No doc states an unreached release step as already done, and no doc claims ahead of reality
|
|
53
|
+
(the docs describe each release state only once it has actually been reached).
|
|
54
|
+
- [ ] CHANGELOG shows the current version's real status (published to npm) with a release date that matches the actual publish.
|
|
55
55
|
- [ ] No private source material, local personal paths, tokens, email addresses, customer data, or private governance content are present.
|
|
56
56
|
- [ ] Privacy scan passes on the source tree and generated workspace.
|
|
57
57
|
- [ ] **Maintainer ran the privacy scan with their LOCAL override active.** The shipped `privacy-manifest.json` deliberately contains only generic, anyone-applies markers — it does NOT list this maintainer's own private directory names (e.g. a personal governance folder or knowledge base), because the manifest itself is published and listing them would leak the very names we are protecting. Those names live ONLY in the gitignored `privacy-scan.local.json` (copy `privacy-scan.local.json.example`, fill in the real folder names under `paths`). Before publishing, confirm that file exists and run `npm run privacy:scan` once with it in place, so any stray reference to your private dirs is caught and blocked from the tarball. Verify (and re-confirm after the run) that `privacy-scan.local.json` is still gitignored and is NOT staged/committed — it must never ship.
|
|
@@ -59,20 +59,19 @@ and the *installed* `ai-collab` bin runs — not just that the source tree runs.
|
|
|
59
59
|
## From GitHub source release to npm package
|
|
60
60
|
|
|
61
61
|
These are the steps (and their state gates) that take this repo from earliest build all the way to
|
|
62
|
-
a published **npm package**. Each step is also a re-verification point. Steps 1
|
|
63
|
-
|
|
64
|
-
the npm publish in step 3.
|
|
62
|
+
a published **npm package**. Each step is also a re-verification point. Steps 1–3 are done for
|
|
63
|
+
`0.1.1` (the package is published); re-run this same procedure for the next version.
|
|
65
64
|
|
|
66
65
|
1. **local candidate → publishable candidate** (done)
|
|
67
66
|
- [x] All "Required local checks", "Fresh-tarball install smoke", and "Safety and honesty" boxes above are green.
|
|
68
67
|
- [x] Decide the version. If it changes, update `version` in `package.json` and `package-lock.json`, and add a dated CHANGELOG entry.
|
|
69
68
|
- [x] Working tree clean; no stray `*.tgz` or `*.aict-backup-*` / `.aict.backup-*` artifacts tracked (they are gitignored).
|
|
70
|
-
2. **publishable candidate → GitHub source release** (done
|
|
69
|
+
2. **publishable candidate → GitHub source release** (done)
|
|
71
70
|
- [x] `git push` the release commit to the public GitHub repo.
|
|
72
71
|
- [x] Confirm CI is green on the pushed commit (matrix + tarball install smoke + CLI smoke).
|
|
73
|
-
- [
|
|
74
|
-
3. **GitHub source release → npm package**
|
|
75
|
-
- [
|
|
76
|
-
- [
|
|
77
|
-
- [
|
|
78
|
-
- [
|
|
72
|
+
- [x] `git tag v<version>` and `git push --tags` (or create a GitHub Release for the tag).
|
|
73
|
+
3. **GitHub source release → npm package** (done)
|
|
74
|
+
- [x] Confirm npm auth (`npm whoami`) and that the `name`/`version` are publishable (not already taken/published).
|
|
75
|
+
- [x] `npm publish` (consider `npm publish --dry-run` first; the package is public, Apache-2.0).
|
|
76
|
+
- [x] Post-publish: in a clean dir, `npm install -g ai-collab-open-system` (the package name) and verify the global `ai-collab init/guide/demo/check` command all work.
|
|
77
|
+
- [x] README/CHANGELOG statements about the global `ai-collab` command and `npm install` are now literally true; the Release Status table marks **npm package** reached and the CHANGELOG carries the release date.
|