ai-collab-open-system 0.1.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/.aict/START_HERE.md +127 -0
- package/.aict/WORKSPACE_MANIFEST.json +91 -0
- package/.aict/acceptance/EXAMPLE.synthetic.md +49 -0
- package/.aict/acceptance/FAILURE_MODES.md +40 -0
- package/.aict/acceptance/PROMPT.md +47 -0
- package/.aict/acceptance/README.md +44 -0
- package/.aict/acceptance/TEMPLATE.md +57 -0
- package/.aict/adapters/SHARED_CORE_CONTRACT.md +106 -0
- package/.aict/adapters/claude-code/ADAPTER.md +28 -0
- package/.aict/adapters/cline/ADAPTER.md +28 -0
- package/.aict/adapters/codex/ADAPTER.md +28 -0
- package/.aict/adapters/copilot/ADAPTER.md +28 -0
- package/.aict/adapters/cursor/ADAPTER.md +28 -0
- package/.aict/adapters/windsurf/ADAPTER.md +28 -0
- package/.aict/context/EXAMPLE.synthetic.md +53 -0
- package/.aict/context/FAILURE_MODES.md +40 -0
- package/.aict/context/PROMPT.md +47 -0
- package/.aict/context/README.md +44 -0
- package/.aict/context/TEMPLATE.md +63 -0
- package/.aict/cookbook/README.md +8 -0
- package/.aict/cookbook/bridge-to-a-second-family.md +103 -0
- package/.aict/cookbook/connect-a-tool.md +67 -0
- package/.aict/cookbook/review-a-half-product.md +79 -0
- package/.aict/cookbook/run-a-first-loop.md +81 -0
- package/.aict/examples/README.md +21 -0
- package/.aict/examples/ai-coding-long-task/CASE.md +161 -0
- package/.aict/examples/ai-coding-long-task/artifacts/acceptance-card.md +36 -0
- package/.aict/examples/ai-coding-long-task/artifacts/context-package.md +30 -0
- package/.aict/examples/ai-coding-long-task/artifacts/execution-prompt.md +30 -0
- package/.aict/examples/ai-coding-long-task/artifacts/first-ai-output.md +109 -0
- package/.aict/examples/ai-coding-long-task/artifacts/guard-review.md +40 -0
- package/.aict/examples/ai-coding-long-task/artifacts/handoff-note.md +28 -0
- package/.aict/examples/ai-coding-long-task/artifacts/harvest-seed.md +28 -0
- package/.aict/examples/ai-coding-long-task/artifacts/revised-output.md +62 -0
- package/.aict/examples/content-production-harvest/CASE.md +87 -0
- package/.aict/examples/content-production-harvest/artifacts/acceptance-card.md +28 -0
- package/.aict/examples/content-production-harvest/artifacts/context-package.md +28 -0
- package/.aict/examples/content-production-harvest/artifacts/execution-prompt.md +30 -0
- package/.aict/examples/content-production-harvest/artifacts/guard-review.md +28 -0
- package/.aict/examples/content-production-harvest/artifacts/handoff-note.md +28 -0
- package/.aict/examples/content-production-harvest/artifacts/harvest-seed.md +28 -0
- package/.aict/examples/multi-tool-collaboration/CASE.md +87 -0
- package/.aict/examples/multi-tool-collaboration/artifacts/acceptance-card.md +28 -0
- package/.aict/examples/multi-tool-collaboration/artifacts/context-package.md +28 -0
- package/.aict/examples/multi-tool-collaboration/artifacts/execution-prompt.md +30 -0
- package/.aict/examples/multi-tool-collaboration/artifacts/guard-review.md +28 -0
- package/.aict/examples/multi-tool-collaboration/artifacts/handoff-note.md +28 -0
- package/.aict/examples/multi-tool-collaboration/artifacts/harvest-seed.md +28 -0
- package/.aict/examples/personal-judgment-growth-assistant/CASE.md +87 -0
- package/.aict/examples/personal-judgment-growth-assistant/artifacts/acceptance-card.md +28 -0
- package/.aict/examples/personal-judgment-growth-assistant/artifacts/context-package.md +28 -0
- package/.aict/examples/personal-judgment-growth-assistant/artifacts/execution-prompt.md +30 -0
- package/.aict/examples/personal-judgment-growth-assistant/artifacts/guard-review.md +28 -0
- package/.aict/examples/personal-judgment-growth-assistant/artifacts/handoff-note.md +28 -0
- package/.aict/examples/personal-judgment-growth-assistant/artifacts/harvest-seed.md +28 -0
- package/.aict/examples/research-knowledge-synthesis/CASE.md +87 -0
- package/.aict/examples/research-knowledge-synthesis/artifacts/acceptance-card.md +28 -0
- package/.aict/examples/research-knowledge-synthesis/artifacts/context-package.md +28 -0
- package/.aict/examples/research-knowledge-synthesis/artifacts/execution-prompt.md +30 -0
- package/.aict/examples/research-knowledge-synthesis/artifacts/guard-review.md +28 -0
- package/.aict/examples/research-knowledge-synthesis/artifacts/handoff-note.md +28 -0
- package/.aict/examples/research-knowledge-synthesis/artifacts/harvest-seed.md +28 -0
- package/.aict/guard/EXAMPLE.synthetic.md +51 -0
- package/.aict/guard/FAILURE_MODES.md +40 -0
- package/.aict/guard/PROMPT.md +47 -0
- package/.aict/guard/README.md +44 -0
- package/.aict/guard/TEMPLATE.md +60 -0
- package/.aict/handoff/EXAMPLE.synthetic.md +51 -0
- package/.aict/handoff/FAILURE_MODES.md +40 -0
- package/.aict/handoff/PROMPT.md +47 -0
- package/.aict/handoff/README.md +44 -0
- package/.aict/handoff/TEMPLATE.md +60 -0
- package/.aict/harvest/EXAMPLE.synthetic.md +51 -0
- package/.aict/harvest/FAILURE_MODES.md +40 -0
- package/.aict/harvest/PROMPT.md +47 -0
- package/.aict/harvest/README.md +44 -0
- package/.aict/harvest/TEMPLATE.md +60 -0
- package/.aict/mechanisms/README.md +34 -0
- package/.aict/mechanisms/anti-drift-partner/EXAMPLE.synthetic.md +46 -0
- package/.aict/mechanisms/anti-drift-partner/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/anti-drift-partner/PROMPT.md +75 -0
- package/.aict/mechanisms/anti-drift-partner/README.md +82 -0
- package/.aict/mechanisms/anti-drift-partner/TEMPLATE.md +74 -0
- package/.aict/mechanisms/blind-spot-scan/EXAMPLE.synthetic.md +39 -0
- package/.aict/mechanisms/blind-spot-scan/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/blind-spot-scan/PROMPT.md +72 -0
- package/.aict/mechanisms/blind-spot-scan/README.md +79 -0
- package/.aict/mechanisms/blind-spot-scan/TEMPLATE.md +70 -0
- package/.aict/mechanisms/collaboration-coach/EXAMPLE.synthetic.md +40 -0
- package/.aict/mechanisms/collaboration-coach/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/collaboration-coach/PROMPT.md +72 -0
- package/.aict/mechanisms/collaboration-coach/README.md +79 -0
- package/.aict/mechanisms/collaboration-coach/TEMPLATE.md +61 -0
- package/.aict/mechanisms/do-not-handle-yet/EXAMPLE.synthetic.md +15 -0
- package/.aict/mechanisms/do-not-handle-yet/FAILURE_MODES.md +16 -0
- package/.aict/mechanisms/do-not-handle-yet/PROMPT.md +41 -0
- package/.aict/mechanisms/do-not-handle-yet/README.md +30 -0
- package/.aict/mechanisms/do-not-handle-yet/TEMPLATE.md +38 -0
- package/.aict/mechanisms/dual-guard/EXAMPLE.synthetic.md +54 -0
- package/.aict/mechanisms/dual-guard/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/dual-guard/PROMPT.md +76 -0
- package/.aict/mechanisms/dual-guard/README.md +81 -0
- package/.aict/mechanisms/dual-guard/TEMPLATE.md +73 -0
- package/.aict/mechanisms/feedback-absorption-ledger/EXAMPLE.synthetic.md +49 -0
- package/.aict/mechanisms/feedback-absorption-ledger/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/feedback-absorption-ledger/PROMPT.md +74 -0
- package/.aict/mechanisms/feedback-absorption-ledger/README.md +81 -0
- package/.aict/mechanisms/feedback-absorption-ledger/TEMPLATE.md +69 -0
- package/.aict/mechanisms/half-product-review/EXAMPLE.synthetic.md +15 -0
- package/.aict/mechanisms/half-product-review/FAILURE_MODES.md +16 -0
- package/.aict/mechanisms/half-product-review/PROMPT.md +41 -0
- package/.aict/mechanisms/half-product-review/README.md +30 -0
- package/.aict/mechanisms/half-product-review/TEMPLATE.md +38 -0
- package/.aict/mechanisms/handoff-abc/EXAMPLE.synthetic.md +47 -0
- package/.aict/mechanisms/handoff-abc/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/handoff-abc/PROMPT.md +75 -0
- package/.aict/mechanisms/handoff-abc/README.md +82 -0
- package/.aict/mechanisms/handoff-abc/TEMPLATE.md +60 -0
- package/.aict/mechanisms/harvest-and-erc/EXAMPLE.synthetic.md +43 -0
- package/.aict/mechanisms/harvest-and-erc/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/harvest-and-erc/PROMPT.md +74 -0
- package/.aict/mechanisms/harvest-and-erc/README.md +81 -0
- package/.aict/mechanisms/harvest-and-erc/TEMPLATE.md +60 -0
- package/.aict/mechanisms/honest-calibration/EXAMPLE.synthetic.md +43 -0
- package/.aict/mechanisms/honest-calibration/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/honest-calibration/PROMPT.md +74 -0
- package/.aict/mechanisms/honest-calibration/README.md +81 -0
- package/.aict/mechanisms/honest-calibration/TEMPLATE.md +66 -0
- package/.aict/mechanisms/one-click-dispatch/EXAMPLE.synthetic.md +15 -0
- package/.aict/mechanisms/one-click-dispatch/FAILURE_MODES.md +16 -0
- package/.aict/mechanisms/one-click-dispatch/PROMPT.md +41 -0
- package/.aict/mechanisms/one-click-dispatch/README.md +30 -0
- package/.aict/mechanisms/one-click-dispatch/TEMPLATE.md +38 -0
- package/.aict/mechanisms/plain-language-first-screen/EXAMPLE.synthetic.md +15 -0
- package/.aict/mechanisms/plain-language-first-screen/FAILURE_MODES.md +16 -0
- package/.aict/mechanisms/plain-language-first-screen/PROMPT.md +41 -0
- package/.aict/mechanisms/plain-language-first-screen/README.md +30 -0
- package/.aict/mechanisms/plain-language-first-screen/TEMPLATE.md +38 -0
- package/.aict/mechanisms/root-cause-brake/EXAMPLE.synthetic.md +55 -0
- package/.aict/mechanisms/root-cause-brake/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/root-cause-brake/PROMPT.md +73 -0
- package/.aict/mechanisms/root-cause-brake/README.md +79 -0
- package/.aict/mechanisms/root-cause-brake/TEMPLATE.md +74 -0
- package/.aict/mechanisms/scout-review-controller/EXAMPLE.synthetic.md +15 -0
- package/.aict/mechanisms/scout-review-controller/FAILURE_MODES.md +16 -0
- package/.aict/mechanisms/scout-review-controller/PROMPT.md +41 -0
- package/.aict/mechanisms/scout-review-controller/README.md +30 -0
- package/.aict/mechanisms/scout-review-controller/TEMPLATE.md +38 -0
- package/.aict/mechanisms/single-tool-guard/EXAMPLE.synthetic.md +54 -0
- package/.aict/mechanisms/single-tool-guard/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/single-tool-guard/PROMPT.md +76 -0
- package/.aict/mechanisms/single-tool-guard/README.md +83 -0
- package/.aict/mechanisms/single-tool-guard/TEMPLATE.md +75 -0
- package/.aict/mechanisms/task-splitting/EXAMPLE.synthetic.md +53 -0
- package/.aict/mechanisms/task-splitting/FAILURE_MODES.md +25 -0
- package/.aict/mechanisms/task-splitting/PROMPT.md +72 -0
- package/.aict/mechanisms/task-splitting/README.md +79 -0
- package/.aict/mechanisms/task-splitting/TEMPLATE.md +76 -0
- package/.aict/modes/README.md +11 -0
- package/.aict/modes/execute.md +31 -0
- package/.aict/modes/handoff.md +29 -0
- package/.aict/modes/harvest.md +30 -0
- package/.aict/modes/review.md +28 -0
- package/.aict/modes/shape.md +34 -0
- package/.aict/privacy/COMMERCIAL_BOUNDARY.md +34 -0
- package/.aict/privacy/PRIVACY.md +36 -0
- package/.aict/privacy/REDACTION_CHECKLIST.md +12 -0
- package/.aict/profile/CANDIDATES.md +44 -0
- package/.aict/profile/EXAMPLE.synthetic.md +49 -0
- package/.aict/profile/FAILURE_MODES.md +40 -0
- package/.aict/profile/PROMPT.md +47 -0
- package/.aict/profile/README.md +44 -0
- package/.aict/profile/TEMPLATE.md +57 -0
- package/.aict/prompts/acceptance-definition.md +109 -0
- package/.aict/prompts/guard-review.md +116 -0
- package/.aict/prompts/handoff-generation.md +110 -0
- package/.aict/prompts/harvest-extraction.md +110 -0
- package/.aict/prompts/mode-switching.md +66 -0
- package/.aict/prompts/profile-creation.md +66 -0
- package/.aict/prompts/profile-refinement.md +66 -0
- package/.aict/prompts/project-context-packaging.md +113 -0
- package/.aict/prompts/red-team-challenge.md +106 -0
- package/.aict/prompts/rule-update-proposal.md +114 -0
- package/.aict/prompts/workflow-reset.md +109 -0
- package/.aict/roles/README.md +18 -0
- package/.aict/roles/executor.md +34 -0
- package/.aict/roles/harvester.md +33 -0
- package/.aict/roles/owner-controller.md +38 -0
- package/.aict/roles/scout.md +33 -0
- package/.aict/roles/supervisor.md +34 -0
- package/.aict/roles/system-guardian.md +34 -0
- package/.aict/skills/acceptance/SKILL.md +43 -0
- package/.aict/skills/context/SKILL.md +44 -0
- package/.aict/skills/evidence-pack/SKILL.md +42 -0
- package/.aict/skills/guard/SKILL.md +46 -0
- package/.aict/skills/handoff/SKILL.md +44 -0
- package/.aict/skills/harvest/SKILL.md +44 -0
- package/.aict/skills/mode-switch/SKILL.md +42 -0
- package/.aict/skills/profile/SKILL.md +42 -0
- package/.aict/skills/red-team/SKILL.md +42 -0
- package/.aict/skills/single-tool-guard/SKILL.md +42 -0
- package/.aict/state/CURRENT_STATE.md +13 -0
- package/.aict/state/DECISIONS.md +7 -0
- package/.aict/state/TASK_LOG.md +7 -0
- package/.aict/state/evidence.jsonl +2 -0
- package/.aict/state/learning-ledger.jsonl +1 -0
- package/.aict/state/receipts.jsonl +1 -0
- package/.aict/state/runs.jsonl +1 -0
- package/.aict/state/tasks.jsonl +1 -0
- package/.aict/walkthroughs/10-minute-your-task.md +107 -0
- package/.aict/walkthroughs/10-minute.md +43 -0
- package/.aict/walkthroughs/30-minute.md +22 -0
- package/.aict/walkthroughs/60-minute.md +27 -0
- package/.aict/walkthroughs/synthetic-loop-transcript.md +43 -0
- package/CHANGELOG.md +23 -0
- package/CODE_OF_CONDUCT.md +20 -0
- package/CONTRIBUTING.md +30 -0
- package/KNOWN_LIMITATIONS.md +54 -0
- package/LICENSE +199 -0
- package/PRODUCT_CONTRACT.md +446 -0
- package/README.md +245 -0
- package/RELEASE_CHECKLIST.md +78 -0
- package/SECURITY.md +56 -0
- package/START_HERE.md +89 -0
- package/bin/ai-collab.js +2 -0
- package/docs/DOGFOOD.md +85 -0
- package/docs/FEEDBACK.md +61 -0
- package/docs/FIRST_EXPERIENCE_SPEC.md +32 -0
- package/docs/FREE_VS_PAID.md +53 -0
- package/docs/PUBLIC_BOUNDARY.md +36 -0
- package/docs/PUBLIC_MAPPING.md +178 -0
- package/docs/RELEASE_PRIORITY.md +23 -0
- package/docs/WHY_THIS_EXISTS.md +36 -0
- package/docs/open-system/00-start-here.md +60 -0
- package/docs/open-system/01-ai-collaboration-os.md +33 -0
- package/docs/open-system/02-six-layer-architecture.md +45 -0
- package/docs/open-system/03-role-system.md +33 -0
- package/docs/open-system/04-core-mechanisms.md +34 -0
- package/docs/open-system/05-failure-patterns.md +31 -0
- package/docs/open-system/06-how-to-adapt-to-your-workflow.md +31 -0
- package/package.json +69 -0
- package/privacy-manifest.json +78 -0
- package/privacy-scan.local.json.example +18 -0
- package/scripts/lib/forbidden-in-pack.js +55 -0
- package/scripts/pack-check.js +154 -0
- package/scripts/privacy-scan.js +487 -0
- package/scripts/validate-contract.js +160 -0
- package/src/adapters.js +590 -0
- package/src/bootstrap.js +1184 -0
- package/src/catalog.js +2723 -0
- package/src/cli.js +2899 -0
- package/src/dialogue.js +470 -0
- package/src/i18n.js +1034 -0
- package/src/ledger.js +2011 -0
- package/src/render.js +1381 -0
- package/src/sendmodel.js +452 -0
- package/src/validate.js +1307 -0
- package/src/workspace.js +1679 -0
- package/tests/contract.test.js +8514 -0
package/README.md
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# AI Collaboration Open System
|
|
2
|
+
|
|
3
|
+
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
|
+
|
|
5
|
+
> Runs today from a clone (`node bin/ai-collab.js`); the npm package and global `ai-collab` command are not published yet — see [Release Status](#release-status).
|
|
6
|
+
|
|
7
|
+
中文:你的 AI 是不是老跟你说"搞定了",其实没做完?这是一套塞进你现有 AI(Claude、Cursor、Codex 等)的开源"协作纪律包"。它不替你写代码、不替你想,只干一件事:让 AI 说"做完了"前先拿证据自证、让另一个 AI 复核一遍、让你换工具或隔天再接着干时不用重讲背景。为什么是工作区而不是提示词,见 docs/WHY_THIS_EXISTS.md;新手从 START_HERE.md 开始。
|
|
8
|
+
|
|
9
|
+
## See it in one glance
|
|
10
|
+
|
|
11
|
+
Here is the same messy request, before and after. Messy input:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
I need this task board cleaned up. Add drag-and-drop, maybe keyboard support,
|
|
15
|
+
make it prettier, keep tests passing, and don't rewrite too much. Last chat
|
|
16
|
+
already changed things but I forgot what.
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Raw AI output usually says:
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
Sure. I will refactor the board, improve drag and drop, add keyboard support,
|
|
23
|
+
modernize the UI, and update tests.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
This workspace turns the same input into:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
Context: current slice is reorder behavior; visual redesign is out of scope.
|
|
30
|
+
Acceptance: existing data survives; drag and keyboard reorder both need tests.
|
|
31
|
+
Guard: reject completion until keyboard movement has evidence.
|
|
32
|
+
Handoff: mouse and keyboard reorder done and tested, guard accepted; only visual polish unverified.
|
|
33
|
+
Harvest: long coding tasks need acceptance before implementation and guard before handoff.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
That is the value: less smooth guessing, more visible state. This is a local AI collaboration workspace made of plain files, not a prompt pack: it carries task state (context, acceptance, guard, handoff, harvest), not just better one-off instructions.
|
|
37
|
+
|
|
38
|
+
## Run it in 2 minutes
|
|
39
|
+
|
|
40
|
+
One main path. Clone, init a workspace, then open the 10-minute walkthrough — that is the whole on-ramp.
|
|
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`.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
git clone https://github.com/aaronyi97/ai-collab-open-system.git
|
|
46
|
+
cd ai-collab-open-system
|
|
47
|
+
node bin/ai-collab.js init --target ./my-ai-workspace
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Now open `./my-ai-workspace/.aict/walkthroughs/10-minute-your-task.md`. In 10 minutes you will feel three things on your own task: **the AI defines *done* before it touches the work**, an **independent re-check pressure-tests the "completed" claim against the evidence — passing, rejecting, or flagging insufficient evidence depending on what the evidence shows**, and **task state stops living only in the chat scroll** (it sits in plain files you can reopen, hand off, and resume).
|
|
51
|
+
|
|
52
|
+
(To open the file: macOS `open <file>` · Linux `xdg-open <file>` · Windows `start <file>`. `init` writes a local `.aict/` workspace of plain files; it does not use the network.)
|
|
53
|
+
|
|
54
|
+
### Or taste it with zero install (60 seconds)
|
|
55
|
+
|
|
56
|
+
Not ready to clone? Open the AI you already use, think of one real task that is a bit messy, and paste this:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
I have a task in front of me that's a bit messy. Before writing any implementation, do this:
|
|
60
|
+
Task (redacted — replace any private name/path/number with a placeholder): [your one-paragraph plain-language description]
|
|
61
|
+
1) Boundary card: this slice does only X; explicitly list what is NOT in scope.
|
|
62
|
+
2) Acceptance card: a numbered list of hard, checkable standards (AC1, AC2, ...), and mark anything that would be out of scope.
|
|
63
|
+
Do not start the work yet — just return the boundary card and the acceptance card.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
That is the first move of the loop — the AI defines *done* before it acts, on your own task. To make it repeatable across tools and sessions (saved as local files), run the 2-minute path above. The full three-step loop (boundary → build → independent re-check) is in the [10-Minute Experience](#10-minute-experience) below.
|
|
67
|
+
|
|
68
|
+
## Start with one AI
|
|
69
|
+
|
|
70
|
+
One AI is enough to start — you do not need two tools. With a single AI, this system turns "the AI said it's done" into a result that has evidence, can be re-checked, handed off, and harvested. That alone is most of the value; the single-tool guard runs a real adversarial review (a fresh conversation + a reviewer prompt) instead of trusting the same assistant that just wrote it. This is the front door, not a downgrade. Adding a second, different model family makes the re-check stronger — an independent review a single tool cannot give itself — but that is the ceiling, not the entry bar. (How the guard levels are computed, and why a single tool's cross-family claim is marked unverified, is in the [Commands](#commands) section and `--help`.)
|
|
71
|
+
|
|
72
|
+
For the full public-system explanation, read [docs/open-system/00-start-here.md](./docs/open-system/00-start-here.md). For privacy and source-to-public rewriting, read [docs/PUBLIC_MAPPING.md](./docs/PUBLIC_MAPPING.md).
|
|
73
|
+
|
|
74
|
+
中文:一个AI也能开始:先把"做完了"变成有证据、可复核、可交接、可沉淀的结果。这就是大部分价值。有第二个模型族时,可以升级成跨族双守卫。那是一个单工具给不了自己的独立复核。守卫等级怎么算、为什么单工具自称的跨族复核会被标成"未验证",见下面 Commands 和 --help。
|
|
75
|
+
|
|
76
|
+
## First Run (keep the workspace as local files)
|
|
77
|
+
|
|
78
|
+
This is the same `init` as the 2-minute path, with the cross-platform openers spelled out. You only need it if you want the workspace saved locally so the same rules drive every tool and survive across sessions:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
node bin/ai-collab.js init --target ./my-ai-workspace
|
|
82
|
+
# then open these two files in your editor — pick your platform's opener:
|
|
83
|
+
# macOS: open ./my-ai-workspace/.aict/START_HERE.md
|
|
84
|
+
# Linux: xdg-open ./my-ai-workspace/.aict/START_HERE.md
|
|
85
|
+
# Windows: start .\my-ai-workspace\.aict\START_HERE.md
|
|
86
|
+
# (then the same for ./my-ai-workspace/.aict/walkthroughs/10-minute-your-task.md)
|
|
87
|
+
```
|
|
88
|
+
|
|
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.
|
|
90
|
+
|
|
91
|
+
### What the first conversation looks like
|
|
92
|
+
|
|
93
|
+
Once the workspace is installed, the rules **instruct** your AI to open the first conversation proactively, rather than waiting to be asked: 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". Whether the AI actually opens this way depends on your tool loading this rule — some tools follow workspace instructions more eagerly than others. If you would rather drive it yourself, run `node bin/ai-collab.js bootstrap --yes` for the same read-only baseline at any time.
|
|
94
|
+
|
|
95
|
+
中文:装好工作区后,这套规则会**指示**你的 AI 在第一次对话时主动开口(而不是等你问):先自我介绍、提出花约 30 秒扫一眼你最近的活,并在扫描**之前**说清隐私边界——扫描是由你本来就在用的那个云端 AI 执行的,内容会像平常聊天一样经过你的服务商,所以这**不是**「零数据离开你的机器」;`ai-collab` 工具本身不向任何第三方发送东西。主动权在你:回「好」「只看 X 项目」或「先不要」。AI 是否真的这样开口,取决于你的工具有没有加载这条规则——有的工具比别的更听工作区指令。想自己来,随时跑 `node bin/ai-collab.js bootstrap --yes` 拿同样的只读基线。
|
|
96
|
+
|
|
97
|
+
## 10-Minute Experience
|
|
98
|
+
|
|
99
|
+
Two ways in. Pick one.
|
|
100
|
+
|
|
101
|
+
### Path 1 (recommended): run the loop on your own real task
|
|
102
|
+
|
|
103
|
+
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
|
+
|
|
105
|
+
1. Run `node bin/ai-collab.js init --target ./my-ai-workspace`.
|
|
106
|
+
2. Open `./my-ai-workspace/.aict/walkthroughs/10-minute-your-task.md` and follow its five steps.
|
|
107
|
+
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
|
+
4. You let it do only the accepted slice and report what it changed, ran, and did not verify.
|
|
109
|
+
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.
|
|
110
|
+
|
|
111
|
+
### Path 2: watch the prepared demo first
|
|
112
|
+
|
|
113
|
+
Pick this if your task feels too sensitive to paste right now, or you just want to see what the flow looks like before running it on your own work.
|
|
114
|
+
|
|
115
|
+
1. Run the same `init` as above.
|
|
116
|
+
2. Open `./my-ai-workspace/.aict/walkthroughs/10-minute.md` (the demo preview) and follow its five steps.
|
|
117
|
+
3. It walks you through the prepared `examples/ai-coding-long-task/CASE.md` and its artifacts.
|
|
118
|
+
4. You copy the context, acceptance, and execution prompt into your AI tool.
|
|
119
|
+
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
|
+
|
|
121
|
+
中文路径:两条路任选其一。**路 1(推荐)跑你自己的真实任务**:跑 `node bin/ai-collab.js init --target ./my-ai-workspace`(发布到 npm 后才能用全局 `ai-collab`),打开 `.aict/walkthroughs/10-minute-your-task.md`,把你手头一个(脱敏的)真实乱任务丢进去,看 AI 先给边界卡和验收卡(先把“做完”定义清楚),再只做验收卡里的那一小块,最后你新开一个对话(最好换个牌子的 AI)逼它拿证据复核——它会拿证据压你的“做完了”,可能放行、可能驳回、也可能判证据不足,取决于证据本身,而不是替你假设结论。**路 2 先看演示**:怕任务敏感、或想先看流程长啥样,就先打开 `.aict/walkthroughs/10-minute.md`(演示预览版)走旗舰案例,再回来跑路 1。
|
|
122
|
+
|
|
123
|
+
### Optional: prove it is the discipline, not the model (two-track comparison)
|
|
124
|
+
|
|
125
|
+
Want hard proof the structure is doing the work, not just a smarter model? After Path 1, run the same task a second way with no discipline and compare:
|
|
126
|
+
|
|
127
|
+
1. **Track A — no discipline.** Paste your messy one-paragraph task straight into the AI with no structure and ask it to just do it. Screenshot the smooth "Sure, I'll do X, Y, Z" reply — that smooth line is your real before-evidence, generated on your own task.
|
|
128
|
+
2. **Track B — with the loop.** This is just Path 1 above (boundary → build → independent re-check).
|
|
129
|
+
3. **Put them side by side.** Ask the AI to lay both tracks into one table with four rows: *scope*, *definition of done*, *completion claim*, *what would have been missed*. The point lands when you see, on your own work, how thin Track A's "done" was.
|
|
130
|
+
|
|
131
|
+
Want to try it on your own work and tell us what happened? See the [Dogfood Guide](./docs/DOGFOOD.md) (who it is for, 10-minute and 30-minute paths, and — importantly — what *not* to upload), then report back through [docs/FEEDBACK.md](./docs/FEEDBACK.md). Feedback collects your experience, never your private material.
|
|
132
|
+
|
|
133
|
+
## 60-Minute Setup
|
|
134
|
+
|
|
135
|
+
1. Fill a light profile for how you want AI to collaborate.
|
|
136
|
+
2. Fill one context package for a real task, with private details redacted.
|
|
137
|
+
3. Define acceptance before asking for output.
|
|
138
|
+
4. Use your tool adapter or install guidance files with `node bin/ai-collab.js adapters install --target <repo>`.
|
|
139
|
+
5. Run a guard review on the first artifact.
|
|
140
|
+
6. Write a handoff note.
|
|
141
|
+
7. Extract one harvest seed for future reuse.
|
|
142
|
+
|
|
143
|
+
## Commands
|
|
144
|
+
|
|
145
|
+
Before publish, run every command as `node bin/ai-collab.js <args>` from a clone. After the package is published to npm, the same commands work under the global `ai-collab` name shown here:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
node bin/ai-collab.js init --target ./my-ai-workspace
|
|
149
|
+
node bin/ai-collab.js init --target ./my-ai-workspace --dry-run
|
|
150
|
+
node bin/ai-collab.js guide
|
|
151
|
+
node bin/ai-collab.js demo
|
|
152
|
+
node bin/ai-collab.js check --workspace ./my-ai-workspace
|
|
153
|
+
node bin/ai-collab.js adapters install --target ./my-repo
|
|
154
|
+
npm run check
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
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
|
+
|
|
159
|
+
```bash
|
|
160
|
+
node bin/ai-collab.js task create --title "Fix the flaky reorder test" --workspace ./my-ai-workspace/.aict
|
|
161
|
+
node bin/ai-collab.js run start --task t1 --command "npm test" --workspace ./my-ai-workspace/.aict
|
|
162
|
+
node bin/ai-collab.js run finish --task t1 --exit 0 --workspace ./my-ai-workspace/.aict
|
|
163
|
+
node bin/ai-collab.js evidence add --task t1 --kind output --summary "npm test -> exit 0, suite green" --workspace ./my-ai-workspace/.aict
|
|
164
|
+
node bin/ai-collab.js receipt create --task t1 --verdict pass_with_risk --review-mode self --evidence e2 --workspace ./my-ai-workspace/.aict
|
|
165
|
+
node bin/ai-collab.js receipt accept --id c1 --owner you --workspace ./my-ai-workspace/.aict
|
|
166
|
+
node bin/ai-collab.js status --workspace ./my-ai-workspace/.aict
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
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
|
+
|
|
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 `node bin/ai-collab.js --help`.
|
|
172
|
+
|
|
173
|
+
`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
|
+
|
|
175
|
+
## What You Get
|
|
176
|
+
|
|
177
|
+
This is a collaboration operating system, not a prompt collection. What makes it one is the chains it carries, not how many prompts ship inside it:
|
|
178
|
+
|
|
179
|
+
- **A visible task-state chain**: context -> acceptance -> guard -> handoff -> harvest, as plain files, so work has inspectable state instead of living in a chat scroll.
|
|
180
|
+
- **A handoff chain** (handoff A/B/C): any session or tool resumes from where the work actually is, instead of you re-explaining the background each time.
|
|
181
|
+
- **A review chain** (dual guard + SCOUT review controller + half-product review): output gets challenged for evidence before it is trusted, and a confident "done" with no runnable proof gets caught.
|
|
182
|
+
- Six collaboration layers behind that chain: profile, context, acceptance, guard review, handoff, harvest.
|
|
183
|
+
- 16 mechanism packages that operate the chains: dual guard, SCOUT review controller, one-click dispatch, task splitting, anti-drift partner, blind-spot scan, root-cause brake, half-product review, handoff A/B/C, harvest and external recap, do-not-handle-yet, plain-language first screen, honest calibration, feedback-absorption ledger, collaboration coach, and single-tool guard.
|
|
184
|
+
- A complete `.aict/` workspace with `START_HERE.md` and public OS directories: profile, context, acceptance, guard, handoff, harvest, roles, modes, mechanisms, examples, cookbook, and state.
|
|
185
|
+
- Adapter guidance files so common AI tools all work off one shared contract instead of six drifting rule sets.
|
|
186
|
+
- A flagship synthetic case plus additional synthetic cases, and privacy / commercial-boundary docs.
|
|
187
|
+
- The reusable prompt and skill library that powers the above (11 distinct prompts for different workflow moments; 10 distinct skills with process, output, and safety rules) — the count is the supply, the chains above are the point.
|
|
188
|
+
- Contract checks that prevent the project from drifting back into a thin prompt pack.
|
|
189
|
+
|
|
190
|
+
## Honesty Boundary
|
|
191
|
+
|
|
192
|
+
- This is not a hosted assistant.
|
|
193
|
+
- This is not an autonomous agent framework.
|
|
194
|
+
- We do not disguise a single-tool self-review as a cross-family pass. The guard level is computed from evidence, not self-asserted: a single tool tops out at L2 (pass-with-risk); a plain pass requires L3+ with a different model family. 中文:我们不会把单工具自审伪装成跨族通过。
|
|
195
|
+
- Adapter files are guidance, not deep integration with every tool.
|
|
196
|
+
- The CLI does not call external AI APIs, upload content, or run telemetry.
|
|
197
|
+
- Known limitations are documented honestly, not hidden — e.g. concurrent writes to one workspace can produce a duplicate ledger id (rare for a single local user), which `check` catches after the fact. See [KNOWN_LIMITATIONS.md](./KNOWN_LIMITATIONS.md).
|
|
198
|
+
- Paid help, if offered by a maintainer, may calibrate the generic system for a real workflow, but the open method is complete enough to self-run. The open method is never gated behind payment; paid help is only calibration / setup / migration / review / pairing. See [docs/FREE_VS_PAID.md](./docs/FREE_VS_PAID.md).
|
|
199
|
+
|
|
200
|
+
## Release Status
|
|
201
|
+
|
|
202
|
+
This project moves through four explicit release states. Being honest about which one we are
|
|
203
|
+
in is part of the product: the docs must never describe a step that has not happened yet as if
|
|
204
|
+
it already has.
|
|
205
|
+
|
|
206
|
+
| State | Meaning | Reached? | What it means for you (plain language) |
|
|
207
|
+
| --- | --- | --- | --- |
|
|
208
|
+
| **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
|
+
| **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. Not git-tagged yet. | **Current** | You can `git clone` it from GitHub and run `node bin/ai-collab.js`. There is **no** `npm install` and no global `ai-collab` command yet, and no version tag. |
|
|
211
|
+
| **npm package** | Published to npm via `npm publish`. | No | Only then does `npm install -g ai-collab-open-system` (the package name) install the global `ai-collab` command so it works as written elsewhere in this README. |
|
|
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.
|
|
218
|
+
|
|
219
|
+
Everywhere this README (or `ai-collab guide`/`--help`) shows a global `ai-collab ...` command or an
|
|
220
|
+
`npm install`, read it as **"available after the npm package state"**. Until then the working
|
|
221
|
+
command is `node bin/ai-collab.js <args>` from a clone.
|
|
222
|
+
|
|
223
|
+
The exact remaining steps that move this from the current **GitHub source release** to an **npm
|
|
224
|
+
package** (tag, publish, post-publish verification) are listed in
|
|
225
|
+
[RELEASE_CHECKLIST.md](./RELEASE_CHECKLIST.md).
|
|
226
|
+
|
|
227
|
+
## Release Checks
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
npm test
|
|
231
|
+
npm run check
|
|
232
|
+
npm pack --dry-run
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
See [PRODUCT_CONTRACT.md](./PRODUCT_CONTRACT.md), [docs/PUBLIC_BOUNDARY.md](./docs/PUBLIC_BOUNDARY.md), and [privacy-manifest.json](./privacy-manifest.json).
|
|
236
|
+
|
|
237
|
+
## How this fits with Spec Kit / BMAD / AGENTS.md
|
|
238
|
+
|
|
239
|
+
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
|
+
|
|
241
|
+
## Contact
|
|
242
|
+
|
|
243
|
+
- Security issues: see [SECURITY.md](./SECURITY.md) (private channel).
|
|
244
|
+
- General: **X/Twitter** [@AaronYiaazw](https://x.com/AaronYiaazw) · **Email** yi19970319@gmail.com
|
|
245
|
+
- Source & issues: https://github.com/aaronyi97/ai-collab-open-system
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Release Checklist
|
|
2
|
+
|
|
3
|
+
Use this before labeling a commit as a public release candidate, and to move it through the
|
|
4
|
+
release states. The four states are defined in [README Release Status](./README.md#release-status):
|
|
5
|
+
**local candidate → publishable candidate → GitHub source release → npm package**.
|
|
6
|
+
|
|
7
|
+
Current state of `main`: **GitHub source release** (pushed to GitHub, CI green; not git-tagged,
|
|
8
|
+
not npm-published). All automated gates are green (`npm test`, `npm run check` — contract +
|
|
9
|
+
privacy + pack — and `npm pack --dry-run`) and the changes have been reviewed. "Release-ready" is
|
|
10
|
+
a quality bar, not a release event: the source is on GitHub, but it moves to an **npm package**
|
|
11
|
+
only when the maintainer performs the tag + publish steps below. The remaining boxes are those
|
|
12
|
+
publish actions, which have not been run yet.
|
|
13
|
+
|
|
14
|
+
## Required local checks
|
|
15
|
+
|
|
16
|
+
- [ ] `npm ci` (reproducible install from the committed `package-lock.json`)
|
|
17
|
+
- [ ] `npm test`
|
|
18
|
+
- [ ] `npm run check` (test + contract + privacy + pack)
|
|
19
|
+
- [ ] `npm pack --dry-run`
|
|
20
|
+
|
|
21
|
+
## Fresh-tarball install smoke
|
|
22
|
+
|
|
23
|
+
Mirrors the CI `Tarball install smoke` job. The point is to prove the *packed artifact* installs
|
|
24
|
+
and the *installed* `ai-collab` bin runs — not just that the source tree runs.
|
|
25
|
+
|
|
26
|
+
- [ ] `npm pack` to produce `ai-collab-open-system-<version>.tgz`.
|
|
27
|
+
- [ ] In a clean temp dir, `npm init -y` then `npm install <path-to-tgz>`.
|
|
28
|
+
- [ ] Confirm `node_modules/.bin/ai-collab` exists and resolves to the package bin.
|
|
29
|
+
- [ ] Run the installed bin (e.g. `./node_modules/.bin/ai-collab ...`), each must exit 0:
|
|
30
|
+
- [ ] `ai-collab init --target <dir> --force`
|
|
31
|
+
- [ ] `ai-collab guide`
|
|
32
|
+
- [ ] `ai-collab demo`
|
|
33
|
+
- [ ] `ai-collab check --workspace <dir>/.aict`
|
|
34
|
+
- [ ] (Pre-publish, the documented user path is `node bin/ai-collab.js <cmd>` from a clone; CI also
|
|
35
|
+
smoke-tests that source entry. The global `ai-collab` name only works after the npm-package state.)
|
|
36
|
+
|
|
37
|
+
## Product surface
|
|
38
|
+
|
|
39
|
+
- [ ] README first screen shows messy input -> structured result.
|
|
40
|
+
- [ ] README Release Status section states the honest current state, and global `ai-collab` /
|
|
41
|
+
`npm install` mentions are marked "after publish".
|
|
42
|
+
- [ ] Generated `.aict/START_HERE.md` supports both 10-minute experience and 60-minute setup.
|
|
43
|
+
- [ ] The flagship case includes `raw-input`, `baseline-output`, `system-run`, `artifacts`, `comparison`, and `next-step`.
|
|
44
|
+
- [ ] Other cases contain enough detail to run and review, not one-line filler.
|
|
45
|
+
- [ ] Prompt and skill similarity tests pass.
|
|
46
|
+
|
|
47
|
+
## Safety and honesty
|
|
48
|
+
|
|
49
|
+
- [ ] `--force` backs up existing `.aict` content before replacement.
|
|
50
|
+
- [ ] Adapter files are called adapter guidance, not deep integration.
|
|
51
|
+
- [ ] No claim says the CLI automatically understands a user's real business.
|
|
52
|
+
- [ ] No doc states an unreached release step as already done (no false "published to npm",
|
|
53
|
+
no live `npm install ai-collab` as if it works today).
|
|
54
|
+
- [ ] CHANGELOG shows the current version as unreleased (GitHub source, CI green; not npm-published) with no fake release date.
|
|
55
|
+
- [ ] No private source material, local personal paths, tokens, email addresses, customer data, or private governance content are present.
|
|
56
|
+
- [ ] Privacy scan passes on the source tree and generated workspace.
|
|
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.
|
|
58
|
+
|
|
59
|
+
## From GitHub source release to npm package
|
|
60
|
+
|
|
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 and 2 (through the
|
|
63
|
+
current **GitHub source release**) are done except git-tagging; the remaining work is the tag plus
|
|
64
|
+
the npm publish in step 3.
|
|
65
|
+
|
|
66
|
+
1. **local candidate → publishable candidate** (done)
|
|
67
|
+
- [x] All "Required local checks", "Fresh-tarball install smoke", and "Safety and honesty" boxes above are green.
|
|
68
|
+
- [x] Decide the version. If it changes, update `version` in `package.json` and `package-lock.json`, and add a dated CHANGELOG entry.
|
|
69
|
+
- [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 except tag)
|
|
71
|
+
- [x] `git push` the release commit to the public GitHub repo.
|
|
72
|
+
- [x] Confirm CI is green on the pushed commit (matrix + tarball install smoke + CLI smoke).
|
|
73
|
+
- [ ] `git tag v<version>` and `git push --tags` (or create a GitHub Release for the tag).
|
|
74
|
+
3. **GitHub source release → npm package**
|
|
75
|
+
- [ ] Confirm npm auth (`npm whoami`) and that the `name`/`version` are publishable (not already taken/published).
|
|
76
|
+
- [ ] `npm publish` (consider `npm publish --dry-run` first; the package is public, Apache-2.0).
|
|
77
|
+
- [ ] 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.
|
|
78
|
+
- [ ] Only after this step do README/CHANGELOG statements about the global `ai-collab` command and `npm install` become literally true; update the Release Status table to mark **npm package** reached and set the CHANGELOG release date.
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Local-first boundary
|
|
4
|
+
|
|
5
|
+
The CLI does not call external AI APIs, upload user content, scan the whole disk, go online, or install hooks without consent.
|
|
6
|
+
|
|
7
|
+
One command runs code by design: `ai-collab run exec --task <id> --command "..."` executes the command **you** supply, in your own shell, **locally** (to record a real exit code) — exactly like a task runner. It never runs anything you did not pass it, and it still does not go online. The `run start` / `run finish` commands do **not** execute anything — they only record a command and exit code you report.
|
|
8
|
+
|
|
9
|
+
### Dangerous-command guard (`run exec`)
|
|
10
|
+
|
|
11
|
+
`run exec` adds a conservative, deliberately **narrow** safety check. A small set of well-known destructive command shapes trips a guard before anything runs:
|
|
12
|
+
|
|
13
|
+
- `rm -rf` / `rm -fr` (recursive force delete)
|
|
14
|
+
- `sudo ` (privilege escalation)
|
|
15
|
+
- a fork bomb (`:(){ ... }`)
|
|
16
|
+
- a network download piped straight into a shell (`curl ... | sh`, `wget ... | bash`)
|
|
17
|
+
- `dd ` (raw disk write) and `mkfs` (format a filesystem)
|
|
18
|
+
- a redirect into a `/dev/` device node (e.g. `> /dev/sda`; harmless sinks like `>/dev/null` are excluded)
|
|
19
|
+
- `chmod -R 777` (world-writable, recursive)
|
|
20
|
+
- a redirect (`>`/`>>`) into a **system path** (`/etc`, `/usr`, `/bin`, `/sbin`, `/boot`, `/lib`, …)
|
|
21
|
+
|
|
22
|
+
When a command matches:
|
|
23
|
+
|
|
24
|
+
- **On an interactive terminal**, the CLI prints the matched pattern(s) and the command, then asks `[y/N]`. The default is **N** — pressing Enter (or anything other than `y`/`yes`) declines, and **nothing is executed and nothing is recorded**.
|
|
25
|
+
- **Without an interactive terminal** (a script, CI, or an AI calling the CLI), the command is **refused** outright. Pass `--yes` (or `--force`) to run it anyway.
|
|
26
|
+
|
|
27
|
+
Ordinary commands are **rarely** affected — narrow false positives are possible, and `--yes` (or `--force`) always overrides. The guard ignores a danger word that is quoted as data (`echo 'rm -rf ...'`) or used as an argument rather than the command being run (`grep sudo file`), so common cases do not trip it; if no pattern matches, behavior is exactly as before. A knowingly-approved dangerous run is recorded with `dangerousConfirmed: true` so the ledger shows it was confirmed on purpose. The guard is intentionally narrow to avoid false alarms; it is a speed bump for the obviously-destructive case, **not** a sandbox — always read a command (especially an AI-suggested one) before running it.
|
|
28
|
+
|
|
29
|
+
## Reporting
|
|
30
|
+
|
|
31
|
+
Please report security issues **privately** — do not open a public issue or publish exploit details. Use either private channel:
|
|
32
|
+
|
|
33
|
+
- **GitHub Security Advisory** (preferred): open a draft advisory at
|
|
34
|
+
https://github.com/aaronyi97/ai-collab-open-system/security/advisories/new
|
|
35
|
+
- **Email**: yi19970319@gmail.com (X/Twitter: https://x.com/AaronYiaazw)
|
|
36
|
+
|
|
37
|
+
Please allow a few days for an acknowledgement. This is a local-first tool with no
|
|
38
|
+
server and no telemetry, so most reports will concern the CLI's file writes,
|
|
39
|
+
packaging, or the privacy scanner.
|
|
40
|
+
|
|
41
|
+
## Sensitive material
|
|
42
|
+
|
|
43
|
+
Never include:
|
|
44
|
+
|
|
45
|
+
- Tokens, keys, cookies, or credentials.
|
|
46
|
+
- Local machine paths.
|
|
47
|
+
- Raw private conversations.
|
|
48
|
+
- Actual client material.
|
|
49
|
+
- Non-public automation or tool-routing details.
|
|
50
|
+
- Unredacted screenshots.
|
|
51
|
+
|
|
52
|
+
Run:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
node scripts/privacy-scan.js
|
|
56
|
+
```
|
package/START_HERE.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# START_HERE
|
|
2
|
+
|
|
3
|
+
This is the repository entry point — how to start. (Different file from the workspace map: once you run `init`, the generated `./my-ai-workspace/.aict/START_HERE.md` is *your own workspace's* map. This root file gets you there; that one navigates what you built.)
|
|
4
|
+
|
|
5
|
+
Give the AI you already use a thin collaboration discipline: it has to prove a "done" claim before you trust it, let a second AI re-check it, and let you switch tools or pick up tomorrow without re-explaining the background. It treats four process diseases of AI work: the chat that drifts off-task, the AI that says it finished when it did not, output you cannot trust, and the lesson you lose by tomorrow. It does not do the work for you, it does not go online, and it is not another AI assistant.
|
|
6
|
+
|
|
7
|
+
中文:这是仓库入口(怎么开始)。注意和工作区地图不是同一个文件:你跑完 init 后,生成的 .aict/START_HERE.md 才是你自己工作区的地图——根目录这个文件带你进门,那个文件带你逛你建好的工作区。给你现有的 AI 装一套协作纪律:让它说“做完”前先自证、让另一个 AI 复核、换工具不用重讲背景。治四种病:聊跑偏、AI 假装做完、输出不敢信、经验留不住。不替你干活、不联网、不是新助手。
|
|
8
|
+
|
|
9
|
+
This system is extracted from a long-running, real AI-collaboration practice. It does not replace your judgment with automation — it makes AI work visible: define done, guard against false completion, hand off context, harvest lessons, and grow a profile that makes the next round better. AI productivity is a product, not a sum (see docs/WHY_THIS_EXISTS.md) — this gives you the factors beyond the model itself.
|
|
10
|
+
|
|
11
|
+
中文:这套体系抽取自长期真实的 AI 协作实践。它不是用自动化替你判断,而是让 AI 的工作显性化:定义“做完”、守住虚假完成、交接上下文、收割经验、积累一份让下一轮更准的画像。AI 生产力是乘法不是加法(见 docs/WHY_THIS_EXISTS.md)——这套给你模型本身之外的那些因子。
|
|
12
|
+
|
|
13
|
+
## One AI is enough to start
|
|
14
|
+
|
|
15
|
+
You do not need two tools to begin. With a single AI, the completion-claim check runs through `single-tool-guard`: a real adversarial review (a fresh conversation + a reviewer prompt) instead of trusting the same assistant that just wrote it. This is the front door, not a downgrade. Adding a second, different model family makes the re-check stronger (`dual-guard`) — an independent review a single tool cannot give itself — but it is the optional upgrade, not the entry bar. Don't have a second family yet? `.aict/cookbook/bridge-to-a-second-family.md` shows how to set one up (manual or auto). How the guard levels (L0–L4) are computed, and why a single tool's cross-family claim is marked unverified, is the honesty detail covered once you are inside the workspace and in the README's Commands section — not something you need before your first run.
|
|
16
|
+
|
|
17
|
+
中文:一个 AI 也能开始:先把"做完了"变成有证据、可复核、可交接、可沉淀的结果。有第二个不同模型族时复核更强,但那是可选升级、不是入门门槛。守卫等级(L0–L4)怎么算、为什么单工具自称的跨族复核会被标成"未验证",是进了工作区和 README Commands 里才需要看的诚实细节,第一次跑之前不用纠结。
|
|
18
|
+
|
|
19
|
+
Start with the result, not the concept.
|
|
20
|
+
|
|
21
|
+
The source is on GitHub (CI green), but the package is not published to npm yet. Run the CLI from a clone with `node bin/ai-collab.js`. The global `ai-collab` command shown in docs only works after the package is published.
|
|
22
|
+
|
|
23
|
+
## 10 minutes
|
|
24
|
+
|
|
25
|
+
Two ways in; pick one.
|
|
26
|
+
|
|
27
|
+
**Path 1 (recommended) — run the loop on your own real task:**
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
node bin/ai-collab.js init --target ./my-ai-workspace
|
|
31
|
+
# then open in your editor — macOS: open <file> · Linux: xdg-open <file> · Windows: start <file>
|
|
32
|
+
# ./my-ai-workspace/.aict/walkthroughs/10-minute-your-task.md
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Follow the five steps in `.aict/walkthroughs/10-minute-your-task.md`. You describe one real (lightly redacted) task; the AI returns a boundary card and an acceptance card (done defined before any work); you let it do only the accepted slice; then you open a fresh chat — your own tool is enough to start, a different AI family is the optional upgrade — and have it re-check the result against evidence: it pressure-tests the "done" claim and either passes it, rejects it, or flags insufficient evidence, depending on what the evidence shows rather than the tone. This is the fast way to feel the value on work you actually care about.
|
|
36
|
+
|
|
37
|
+
**Path 2 — watch the prepared demo first** (pick this if your task feels too sensitive to paste, or you want to see the flow first):
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node bin/ai-collab.js init --target ./my-ai-workspace
|
|
41
|
+
# then open in your editor — macOS: open <file> · Linux: xdg-open <file> · Windows: start <file>
|
|
42
|
+
# ./my-ai-workspace/.aict/walkthroughs/10-minute.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Follow the five steps in `.aict/walkthroughs/10-minute.md` (the demo preview). It walks you through the prepared case `examples/ai-coding-long-task/CASE.md` and its artifacts in order: context -> acceptance -> first AI output -> guard -> revised -> handoff -> harvest, then catches a false "done" the case plants. After it, run Path 1 on your own task.
|
|
46
|
+
|
|
47
|
+
Either way you should see why the system is different from a single raw AI chat: it keeps task state, acceptance, review, handoff, and reusable learning visible.
|
|
48
|
+
|
|
49
|
+
Want the AI to remind you on its own — to ping you to review every time it claims "done", instead of you remembering? Install the adapter into your tool's always-on instructions with `node bin/ai-collab.js adapters install --target <repo>`. It turns on restrained coaching reminders; if you only use one tool, the completion-claim check routes through `single-tool-guard` (a fresh adversarial pass in the same tool).
|
|
50
|
+
|
|
51
|
+
Then open `docs/open-system/00-start-here.md` in this repository if you want the full public-system explanation.
|
|
52
|
+
|
|
53
|
+
> The file paths in the next two sections live **inside the generated workspace**, not in this repo. They do not exist until you run `node bin/ai-collab.js init --target ./my-ai-workspace` (see the 10-minute path above), which writes them under `./my-ai-workspace/.aict/`. Paths below are shown relative to that `.aict/` workspace root.
|
|
54
|
+
|
|
55
|
+
## 30 minutes
|
|
56
|
+
|
|
57
|
+
Adapt one layer to a current task (run `init` first, then work inside the generated `.aict/`):
|
|
58
|
+
|
|
59
|
+
1. Fill `.aict/context/TEMPLATE.md` or `.aict/acceptance/TEMPLATE.md`.
|
|
60
|
+
2. Open `.aict/adapters/SHARED_CORE_CONTRACT.md`.
|
|
61
|
+
3. Paste the shared contract and your filled template into your AI tool.
|
|
62
|
+
4. Ask for one guard review or handoff note.
|
|
63
|
+
5. Save the artifact back into the workspace.
|
|
64
|
+
|
|
65
|
+
## 60 minutes
|
|
66
|
+
|
|
67
|
+
Run one real task through the loop (again, all paths are inside the generated `.aict/`):
|
|
68
|
+
|
|
69
|
+
1. Fill `.aict/profile/TEMPLATE.md` lightly.
|
|
70
|
+
2. Fill `.aict/context/TEMPLATE.md`.
|
|
71
|
+
3. Fill `.aict/acceptance/TEMPLATE.md`.
|
|
72
|
+
4. Ask your AI tool to execute only against that acceptance card.
|
|
73
|
+
5. Run `.aict/guard/PROMPT.md`.
|
|
74
|
+
6. Save `.aict/handoff/TEMPLATE.md`.
|
|
75
|
+
7. Save one lesson in `.aict/harvest/TEMPLATE.md`.
|
|
76
|
+
|
|
77
|
+
## What is inside `.aict`
|
|
78
|
+
|
|
79
|
+
`init` generates the `.aict/` workspace; these directories do not exist in this repo until then:
|
|
80
|
+
|
|
81
|
+
- `profile/`, `context/`, `acceptance/`, `guard/`, `handoff/`, `harvest/`
|
|
82
|
+
- `roles/`, `modes/`, `mechanisms/`, `examples/`, `cookbook/`, `state/`
|
|
83
|
+
- adapter guidance for Codex, Claude Code, Cursor, Cline, Windsurf, and Copilot
|
|
84
|
+
|
|
85
|
+
## 中文路径
|
|
86
|
+
|
|
87
|
+
先拿你自己的真实任务跑一遍,不要先读一堆概念(按上面 Path 1:`init` 后打开 `.aict/walkthroughs/10-minute-your-task.md`)。任务太敏感不方便贴、或想先看一遍流程,再走 Path 2 的演示版 `.aict/walkthroughs/10-minute.md`。你要看的不是“这个系统怎么自我介绍”,而是你自己那段混乱需求如何被拆成:目标边界、完成标准、审查意见、交接状态、可复用经验。
|
|
88
|
+
|
|
89
|
+
想让 AI 自己提醒你、每次说“做完了”都主动喊你复核,而不是你自己记着?用 `node bin/ai-collab.js adapters install --target <repo>` 把 adapter 装进工具的常驻指令,就会打开克制的提醒;只有一个工具时,完成自检会走 `single-tool-guard`(同一个工具里新开一轮对抗式复核)。
|
package/bin/ai-collab.js
ADDED
package/docs/DOGFOOD.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Dogfood Guide
|
|
2
|
+
|
|
3
|
+
Try this workspace on your own AI collaboration, then tell us what actually happened. This page is for trying it; [docs/FEEDBACK.md](./FEEDBACK.md) is for reporting back.
|
|
4
|
+
|
|
5
|
+
Everything here is local-first and synthetic. You read and copy plain files into the AI tools you already use. Nothing is uploaded by the CLI, and we do not want you to upload anything private to us either. See [What NOT to upload](#what-not-to-upload) before you start.
|
|
6
|
+
|
|
7
|
+
## Who should try it
|
|
8
|
+
|
|
9
|
+
This is worth ten minutes if you work across more than one AI tool and you keep hitting one of these:
|
|
10
|
+
|
|
11
|
+
- **Context keeps getting lost.** You re-explain the same task boundary every session, and the AI still drifts out of scope.
|
|
12
|
+
- **The AI claims it finished, but it did not.** You get a fluent "done — added X, Y, Z with tests" and only later find a piece was never implemented.
|
|
13
|
+
- **You repeat your background across sessions.** Every new chat starts cold; the previous chat's state is gone and you retype it.
|
|
14
|
+
- **You cannot tell which AI is right.** Two tools (or two sessions) disagree and you have no structured way to decide which one to trust.
|
|
15
|
+
|
|
16
|
+
If none of those bite you, this probably is not for you, and that is a fine outcome to report. Skipping it for low-stakes, throwaway work is the right call — running structure over trivial work is just ceremony.
|
|
17
|
+
|
|
18
|
+
## Try it in 10 minutes (on your own task — recommended)
|
|
19
|
+
|
|
20
|
+
Run the whole loop on one real task of *yours*, in three short rounds, and watch an independent AI catch a thin "done" on work you actually care about. This is the fastest way to feel why it matters.
|
|
21
|
+
|
|
22
|
+
1. Initialize a throwaway workspace:
|
|
23
|
+
```bash
|
|
24
|
+
node bin/ai-collab.js init --target ./my-ai-workspace
|
|
25
|
+
```
|
|
26
|
+
2. Open `./my-ai-workspace/.aict/walkthroughs/10-minute-your-task.md` and follow its five steps.
|
|
27
|
+
3. You describe one real (lightly redacted) task; the AI returns a **boundary card** and an **acceptance card** — *done* defined before any work — then does only the accepted slice and reports what it changed, ran, and did not verify.
|
|
28
|
+
4. The point to notice: you open a fresh chat (ideally a different AI brand) and have it re-check the result against evidence. Where the work over-claimed, it returns `reject` with the defect pinned to a location — on your task, not a prepared one.
|
|
29
|
+
|
|
30
|
+
What you should feel by the end: your own task had visible state (what is in scope, what "done" means, what is still unproven) instead of one smooth guess — and a thin "done" got caught before you trusted it. Redact before you paste (see [What NOT to upload](#what-not-to-upload)); the loop works on a redacted description and needs no private original.
|
|
31
|
+
|
|
32
|
+
### Prefer to watch a prepared demo first? (optional)
|
|
33
|
+
|
|
34
|
+
If your task feels too sensitive to paste right now, or you just want to see the flow first, open `./my-ai-workspace/.aict/walkthroughs/10-minute.md` (the demo preview) instead. It runs the same loop on the prepared `ai-coding-long-task` case: the first output claims arrow-key reorder works, the guard proves the keyboard handler is a stub that never moves anything, and it returns `reject` with a line citation — not a vibe. Then come back and run the loop on your own task above.
|
|
35
|
+
|
|
36
|
+
## Try it in 30 minutes
|
|
37
|
+
|
|
38
|
+
Go deeper: take one mechanism and point it at *your own* half-finished work. The cleanest one to start with is **dual-guard**: use it to review a deliverable that claims to be done.
|
|
39
|
+
|
|
40
|
+
1. Read the recipe: `./my-ai-workspace/.aict/cookbook/review-a-half-product.md`. It explains why each step exists and how to adapt it.
|
|
41
|
+
2. Pick something of yours that says "done but maybe not" — a draft, a small feature, a doc whose first-run path you are not sure actually works.
|
|
42
|
+
3. Redact it first (see below), then paste the redacted artifact plus the copy-paste block from the cookbook (the dual-guard review prompt) into a second AI tool — ideally a **different model family** from whatever produced the work, because a different family is the pass most likely to see what the author missed.
|
|
43
|
+
4. Demand findings tied to specific lines or missing evidence, ordered by severity, with a pass or reject. Do not accept "looks fine".
|
|
44
|
+
5. The underlying mechanism is `./my-ai-workspace/.aict/mechanisms/dual-guard/` — read its `PROMPT.md` and `README.md` if you want the full two-layer version (cross-family binding guard + same-family reference guard).
|
|
45
|
+
|
|
46
|
+
What you should feel by the end: you got an evidence-grounded second opinion on your own work without handing your private original to anyone — the review runs on a redacted artifact plus its evidence.
|
|
47
|
+
|
|
48
|
+
## What to report back
|
|
49
|
+
|
|
50
|
+
After either path, open [docs/FEEDBACK.md](./FEEDBACK.md) and fill it in. We mostly want to know:
|
|
51
|
+
|
|
52
|
+
- Which AI tools you use, and which pain point pulled you in.
|
|
53
|
+
- Where the first experience stalled, if it did.
|
|
54
|
+
- Which mechanism was the most useful, and which one you could not make sense of.
|
|
55
|
+
- Whether you would use this on a real workflow, and whether paying to save calibration time would be worth it to you.
|
|
56
|
+
|
|
57
|
+
Report the *experience*, not your task. The feedback template asks only for感受-level answers, never the work itself. (中文:只反馈体验感受,不要把真实任务内容贴进来。)
|
|
58
|
+
|
|
59
|
+
## What NOT to upload
|
|
60
|
+
|
|
61
|
+
The honest rule of this project is local-first: the open method is complete on your own machine, and we do not collect your work. So when you report back, give us your **experience**, never your **material**. Do not paste, attach, or screenshot any of the following into an issue, a discussion, or anywhere it leaves your machine:
|
|
62
|
+
|
|
63
|
+
- Actual customer or contact material, or names of people and companies.
|
|
64
|
+
- Tokens, API keys, cookies, passwords, or any credential.
|
|
65
|
+
- Absolute local machine paths (anything that reveals your home directory or internal folder layout).
|
|
66
|
+
- Private chat logs, raw session transcripts, or the unredacted original of whatever you reviewed.
|
|
67
|
+
- Company-internal information: private routing, internal numbers, non-public processes, or proprietary docs.
|
|
68
|
+
- Unredacted screenshots that show any of the above.
|
|
69
|
+
|
|
70
|
+
If you want to show an example, rewrite it as a synthetic placeholder first (same shape as the cases in `examples/`), or just describe what happened in words. The review mechanisms are built to work on a redacted artifact plus its evidence — they never need the private original.
|
|
71
|
+
|
|
72
|
+
Before you post anything, you can sanity-check your own repo the same way this project checks itself:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
node scripts/privacy-scan.js
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
中文(同义):本地优先,方法在你自己机器上就完整可用,我们不收集你的工作内容。反馈时只给体验感受,不要上传任何隐私材料:客户或联系人信息、密钥口令、本机绝对路径、私有对话原文、公司内部信息、未脱敏截图。要举例就先改写成合成占位例子,或者直接用文字描述。
|
|
79
|
+
|
|
80
|
+
## Why dogfood this at all
|
|
81
|
+
|
|
82
|
+
Two reasons, stated plainly:
|
|
83
|
+
|
|
84
|
+
- It makes the project better. Real friction reports — where the first run stalls, which mechanism reads as jargon — are what fix the open system. A confused first-run is a bug we want to know about.
|
|
85
|
+
- It is how a real working relationship can start, honestly. If the open method helps but you would rather have it tuned to your own tools and workflow, that is what paid help is for — calibration, setup, migration, review, pairing. The method here stays complete and free; paid help only saves you the trial-and-error of calibrating it. See [docs/FREE_VS_PAID.md](./FREE_VS_PAID.md). We never gate the basic method behind payment, and we never tell you "you have a problem, pay to see the answer."
|