@passioncode-ai/passioncode 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
- # passioncode
1
+ # PassionCode.ai launcher
2
2
 
3
- > **PassionCode.ai — The agent-agnostic operating system for AI-native teams.**
4
-
5
- Every PassionCode.ai agent skill, for Claude Code and every other agent on your machine,
6
- installed and updated as one set:
3
+ The **PassionCode.ai launcher** (`@passioncode-ai/passioncode` on npm) installs and updates every
4
+ PassionCode.ai agent skill and plugin — the Fabric Agent Adapter, Observatory Log and the
5
+ organization's working rules — for Claude Code and every other agent on your machine, as one set.
6
+ It is how a teammate's agent gets the tools that build for Fabric, PassionCode.ai's CEO AI agent,
7
+ and it works on its own: no Fabric install, no account, no key.
7
8
 
8
9
  ```bash
9
10
  npx @passioncode-ai/passioncode@latest update
@@ -27,8 +28,11 @@ out of it, even when they implement Fabric protocols.
27
28
  no unscoped `passioncode` package on npm.
28
29
  2. **Configure:** nothing to set, no account and no key. Background updates are on by default;
29
30
  `npx @passioncode-ai/passioncode@latest config set update.auto off` turns them off.
30
- 3. **MCP:** none. The launcher installs skills and session hooks; it neither serves nor calls an
31
- MCP server. The tools that do (Fabric Switchboard, Fabric Inbox) document their own.
31
+ 3. **MCP:** none today, and not planned. The launcher installs skills and session hooks and is
32
+ driven by its CLI (`update`, `status`, `restore`, `uninstall`, `config`); it neither serves nor
33
+ calls an MCP server. The products it installs for, and the ones that serve MCP (Fabric
34
+ Switchboard, Fabric Inbox, Fabric Dashboards), document their own registration and proving
35
+ call; the Fabric Agent Adapter's quick start builds and calls one.
32
36
  4. **Develop:** clone, then `npm test` — there are no dependencies and no lockfile, so there is
33
37
  nothing to install (`npm ci` refuses to run here). `npm run vendor` builds `payload/` from the
34
38
  members pinned in `family.json`; `claude plugin validate ./payload --strict` checks it. Start
@@ -93,9 +97,8 @@ reads a member from `<dir>/<repository name>`, and `PASSIONCODE_CHECKOUT_<MEMBER
93
97
 
94
98
  ## License
95
99
 
96
- Source-available under PolyForm Noncommercial or Internal Use; commercial license on
97
- request (contact@passioncode.ai). SPDX:
98
- `PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0` — see
99
- [LICENSE](LICENSE). Versions up to and including v0.1.4 were released under the MIT
100
- License and remain available under it. Contributions are accepted under [CLA.md](CLA.md)
101
- ([CONTRIBUTING.md](CONTRIBUTING.md)).
100
+ Open source under the [GNU AGPL-3.0](LICENSE). A [commercial license](COMMERCIAL-LICENSE.md) is
101
+ available for use that does not meet the AGPL's terms — contact@passioncode.ai.
102
+ Versions before 0.1.12 were released under PolyForm Noncommercial or Internal Use (v0.1.5 to
103
+ v0.1.11) and MIT (v0.1.4 and earlier); each keeps the licence it was released under.
104
+ Contributions are accepted under [CLA.md](CLA.md) ([CONTRIBUTING.md](CONTRIBUTING.md)).
package/family.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "name": "fabric-agent-adapter",
9
9
  "displayName": "Fabric Agent Adapter",
10
10
  "repo": "passioncode-ai/fabric-agent-adapter",
11
- "ref": "v0.5.2",
11
+ "ref": "v0.5.4",
12
12
  "kind": "plugin",
13
13
  "path": "plugins/fabric-agent-adapter",
14
14
  "legacyPluginIds": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@passioncode-ai/passioncode",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Every PassionCode.ai agent skill — Fabric Agent Adapter, Observatory Log and the organisation's working rules — for Claude Code and every other agent on the machine, updated as one set.",
5
5
  "bin": {
6
6
  "passioncode": "bin/passioncode.js"
@@ -12,6 +12,8 @@
12
12
  "family.json",
13
13
  "README.md",
14
14
  "LICENSE",
15
+ "COMMERCIAL-LICENSE.md",
16
+ "CLA.md",
15
17
  "CHANGELOG.md",
16
18
  "SECURITY.md"
17
19
  ],
@@ -32,7 +34,7 @@
32
34
  "url": "git+https://github.com/passioncode-ai/passioncode.git"
33
35
  },
34
36
  "homepage": "https://github.com/passioncode-ai/passioncode",
35
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0",
37
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial",
36
38
  "author": {
37
39
  "name": "PassionCode.ai",
38
40
  "url": "https://passioncode.ai/"
@@ -11,13 +11,13 @@
11
11
  "name": "fabric-agent-adapter",
12
12
  "displayName": "Fabric Agent Adapter",
13
13
  "source": "./plugins/fabric-agent-adapter",
14
- "version": "0.5.2",
14
+ "version": "0.5.4",
15
15
  "description": "Create new Fabric-compatible agents, build them as always-alive local services with dashboards (fabric-service/0.1), and adapt existing projects to the Fabric Agent Contract through evidence-backed MCP, A2A, or local-runner provider bundles.",
16
16
  "author": {
17
17
  "name": "PassionCode.ai",
18
18
  "url": "https://passioncode.ai/"
19
19
  },
20
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0"
20
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial"
21
21
  },
22
22
  {
23
23
  "name": "observatory-log",
@@ -35,13 +35,13 @@
35
35
  "name": "passioncode",
36
36
  "displayName": "PassionCode.ai",
37
37
  "source": "./plugins/passioncode",
38
- "version": "0.1.11",
38
+ "version": "0.1.13",
39
39
  "description": "The organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check that keeps the PassionCode.ai set current.",
40
40
  "author": {
41
41
  "name": "PassionCode.ai",
42
42
  "url": "https://passioncode.ai/"
43
43
  },
44
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0"
44
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial"
45
45
  }
46
46
  ]
47
47
  }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "family": "passioncode",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "release": true,
5
5
  "members": [
6
6
  {
7
7
  "name": "fabric-agent-adapter",
8
8
  "displayName": "Fabric Agent Adapter",
9
9
  "repo": "passioncode-ai/fabric-agent-adapter",
10
- "ref": "v0.5.2",
11
- "commit": "b7a6b8ea081894ea8c0d3765879721c17f6a3655",
12
- "version": "0.5.2",
10
+ "ref": "v0.5.4",
11
+ "commit": "358c5296d14c593760c73795fa17c77658f9286c",
12
+ "version": "0.5.4",
13
13
  "via": "clone of https://***@github.com/passioncode-ai/fabric-agent-adapter.git",
14
14
  "skills": [
15
15
  "adapting-projects-to-fabric",
@@ -22,13 +22,13 @@
22
22
  "legacyMarketplaces": [
23
23
  "fabric-agent-adapter"
24
24
  ],
25
- "contentHash": "sha256:8d2a7d2795b1ab1e0dd3a1fc9a073c70e6085f160fa125bd5ada5a5f3d8d4c0b",
25
+ "contentHash": "sha256:577bc17f08e963b7b3ddea55f1c50d9e4c5f0756180f59fe0f298ca055684a9d",
26
26
  "description": "Create new Fabric-compatible agents, build them as always-alive local services with dashboards (fabric-service/0.1), and adapt existing projects to the Fabric Agent Contract through evidence-backed MCP, A2A, or local-runner provider bundles.",
27
27
  "author": {
28
28
  "name": "PassionCode.ai",
29
29
  "url": "https://passioncode.ai/"
30
30
  },
31
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0"
31
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial"
32
32
  },
33
33
  {
34
34
  "name": "observatory-log",
@@ -61,22 +61,22 @@
61
61
  "name": "passioncode",
62
62
  "displayName": "PassionCode.ai",
63
63
  "repo": "passioncode-ai/passioncode",
64
- "ref": "v0.1.11",
64
+ "ref": "v0.1.13",
65
65
  "commit": null,
66
- "version": "0.1.11",
66
+ "version": "0.1.13",
67
67
  "via": "this repository",
68
68
  "skills": [
69
69
  "working-in-passioncode"
70
70
  ],
71
71
  "legacyPluginIds": [],
72
72
  "legacyMarketplaces": [],
73
- "contentHash": "sha256:917c5c1429a60a70666f1f8c7b2ee73d2e50bb8db56f64104f418ab0b7a46816",
73
+ "contentHash": "sha256:8ee5265a68efc3d68b92f2e4526b0d4280282bf08cae8ee55ed383b5b0fd4c10",
74
74
  "description": "The organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check that keeps the PassionCode.ai set current.",
75
75
  "author": {
76
76
  "name": "PassionCode.ai",
77
77
  "url": "https://passioncode.ai/"
78
78
  },
79
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0"
79
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial"
80
80
  }
81
81
  ]
82
82
  }
@@ -3,14 +3,14 @@
3
3
  "name": "fabric-agent-adapter",
4
4
  "displayName": "Fabric Agent Adapter",
5
5
  "description": "Create new Fabric-compatible agents, build them as always-alive local services with dashboards (fabric-service/0.1), and adapt existing projects to the Fabric Agent Contract through evidence-backed MCP, A2A, or local-runner provider bundles.",
6
- "version": "0.5.2",
6
+ "version": "0.5.4",
7
7
  "author": {
8
8
  "name": "PassionCode.ai",
9
9
  "url": "https://passioncode.ai/"
10
10
  },
11
11
  "homepage": "https://github.com/passioncode-ai/fabric-agent-adapter",
12
12
  "repository": "https://github.com/passioncode-ai/fabric-agent-adapter",
13
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0",
13
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial",
14
14
  "keywords": [
15
15
  "fabric",
16
16
  "agent",
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: adapting-projects-to-fabric
3
3
  description: Use when adapting an existing agent, MCP server, A2A peer, HTTP service, or terminal CLI to the Fabric Agent Contract—choosing MCP/A2A/local-runner, scaffolding a provider bundle, or checking Fabric compatibility; also for «подключить проект к Fabric» or «сделать агента совместимым с Fabric». NOT for building the Fabric host/orchestrator, configuring an MCP client, or a brand-new agent — that is creating-fabric-agents.
4
- license: PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0
4
+ license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
5
5
  compatibility: Requires filesystem access and Python 3.9+. Exact schema checks additionally need git, Node.js, pnpm, and the pinned private fabric-agent-contract checkout. Works without those tools in an explicitly degraded structural-check mode.
6
6
  metadata:
7
7
  author: PassionCode.ai
8
- version: "0.5.2"
8
+ version: "0.5.4"
9
9
  contract-version: "0.1.0"
10
- contract-commit: "2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f"
10
+ contract-commit: "74d3852f122f5ca5cbc4138a201483531dfa5006"
11
11
  ---
12
12
 
13
13
  # Adapting projects to Fabric
@@ -70,7 +70,7 @@ Use exactly:
70
70
 
71
71
  - contract version `0.1.0`;
72
72
  - repository `https://github.com/passioncode-ai/fabric-agent-contract`;
73
- - commit `2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f`.
73
+ - commit `74d3852f122f5ca5cbc4138a201483531dfa5006`.
74
74
 
75
75
  Read the pinned contract's guide
76
76
  `docs/guides/connecting-compatible-agents.md`, the selected profile specification, and
@@ -179,6 +179,27 @@ unverified surfaces. If live Fabric admission/runtime does not yet exist, the la
179
179
  remain `NOT VERIFIED`; the completed deliverable is an adaptation-ready provider bundle,
180
180
  not a connected provider.
181
181
 
182
+ ## The repository around the provider
183
+
184
+ **For a PassionCode.ai repository**, the adapted project's repository follows the organization's
185
+ [repository standard](https://github.com/passioncode-ai/fabric-workspace/blob/main/knowledge/repository-standard.md) (`knowledge/repository-standard.md`
186
+ in the organization's knowledge base; a clone has it at `fabric-workspace/knowledge/`) from its
187
+ first commit:
188
+
189
+ - `LICENSE`, `COMMERCIAL-LICENSE.md` and `CLA.md` copied byte for byte from the knowledge base's
190
+ `templates/`, and `AGPL-3.0-only OR LicenseRef-PassionCode-Commercial` in every manifest and
191
+ every SKILL.md `license:`; `SECURITY.md` when the repository is public;
192
+ - a README whose first heading is the full name, with `## Quick start for a new teammate`
193
+ (Install; Configure, key names only; MCP, the registration command and one proving tool call,
194
+ verified with a real client in a temporary config; Develop) and `## License`;
195
+ - an `AGENTS.md` that opens with the template's *Read first* block and closes with *After work*,
196
+ and a `CLAUDE.md` whose first line is `@AGENTS.md`.
197
+
198
+ org-index `scripts/check_format.py` reports 0 findings for it before it is called done. **An agent
199
+ someone builds for themselves is not a PassionCode.ai repository:** its licence is its owner's
200
+ choice, nothing about it is published or listed by the organization, and none of these files is
201
+ required of it — though the verified MCP quick start is still how anyone learns to drive it.
202
+
182
203
  ## Completion format
183
204
 
184
205
  Report:
@@ -16,7 +16,7 @@ from urllib.parse import urlparse
16
16
 
17
17
  CONTRACT_VERSION = "0.1.0"
18
18
  CONTRACT_REPOSITORY = "https://github.com/passioncode-ai/fabric-agent-contract"
19
- CONTRACT_COMMIT = "2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f"
19
+ CONTRACT_COMMIT = "74d3852f122f5ca5cbc4138a201483531dfa5006"
20
20
  INTEROP_KEY = "https://fabric.passioncode.ai/agent-contract/extensions/interop/0.1"
21
21
  MCP_REVISION = "2026-07-28"
22
22
  A2A_VERSION = "1.0"
@@ -11,14 +11,14 @@ description: >-
11
11
  descriptor, the well-known document, the events feed and notifications; ships Python and Node
12
12
  reference kits and a live conformance probe. NOT for a one-off script or cron job, a hosted
13
13
  SaaS, the provider manifest itself (adapting-projects-to-fabric), or building Fabric Dashboards.
14
- license: PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0
14
+ license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
15
15
  compatibility: Python 3.9+ or Node.js 20+ for the kits; the probe needs Python 3.9+. launchd steps are macOS-only (Linux services use lifecycle manager none until a systemd adapter exists). No network or package install; the contract checkout is optional.
16
16
  metadata:
17
17
  author: PassionCode.ai
18
- version: "0.5.2"
18
+ version: "0.5.4"
19
19
  contract-version: "0.1.0"
20
20
  extension: "fabric-service/0.1"
21
- extension-commit: "2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f"
21
+ extension-commit: "74d3852f122f5ca5cbc4138a201483531dfa5006"
22
22
  ---
23
23
 
24
24
  # Building Fabric services
@@ -209,6 +209,27 @@ Then prove the lock: start a second copy by hand against the same data directory
209
209
  must exit 75 while the first keeps serving. Prove recovery: `kill -9` the launchd pid;
210
210
  the well-known document must answer again with a new pid within about 15 seconds.
211
211
 
212
+ ## The repository around the service
213
+
214
+ **For a PassionCode.ai repository**, the service's repository follows the organization's
215
+ [repository standard](https://github.com/passioncode-ai/fabric-workspace/blob/main/knowledge/repository-standard.md) (`knowledge/repository-standard.md`
216
+ in the organization's knowledge base; a clone has it at `fabric-workspace/knowledge/`) from its
217
+ first commit:
218
+
219
+ - `LICENSE`, `COMMERCIAL-LICENSE.md` and `CLA.md` copied byte for byte from the knowledge base's
220
+ `templates/`, and `AGPL-3.0-only OR LicenseRef-PassionCode-Commercial` in every manifest and
221
+ every SKILL.md `license:`; `SECURITY.md` when the repository is public;
222
+ - a README whose first heading is the full name, with `## Quick start for a new teammate`
223
+ (Install; Configure, key names only; MCP, the registration command and one proving tool call,
224
+ verified with a real client in a temporary config; Develop) and `## License`;
225
+ - an `AGENTS.md` that opens with the template's *Read first* block and closes with *After work*,
226
+ and a `CLAUDE.md` whose first line is `@AGENTS.md`.
227
+
228
+ org-index `scripts/check_format.py` reports 0 findings for it before it is called done. **An agent
229
+ someone builds for themselves is not a PassionCode.ai repository:** its licence is its owner's
230
+ choice, nothing about it is published or listed by the organization, and none of these files is
231
+ required of it — though the verified MCP quick start is still how anyone learns to drive it.
232
+
212
233
  ## Migrating an existing service
213
234
 
214
235
  Read [the migration reference](references/migrating-a-service.md) — the order of
@@ -1,6 +1,6 @@
1
1
  # fabric-service/0.1 — wire reference
2
2
 
3
- Pinned to `fabric-agent-contract` commit `2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f`
3
+ Pinned to `fabric-agent-contract` commit `74d3852f122f5ca5cbc4138a201483531dfa5006`
4
4
  (`docs/specification/service.md`, DEC-0015). The contract's schemas are normative;
5
5
  this page is the working summary. Extension key:
6
6
  `https://fabric.passioncode.ai/agent-contract/extensions/service/0.1`.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: creating-fabric-agents
3
3
  description: Use when designing and building a NEW agent or provider that must be Fabric-compatible from its first commit — «создай агента, совместимого с фабрикой Passion Code», «новый агент под Fabric», "create a fabric-compatible agent", "build a new Fabric provider", "fabric-ready agent from scratch". Runs the intake grill (capability, named consumer, workflow-or-agent, MCP/A2A/local-runner profile, effect declarations), distils source projects into a knowledge pack whose recorded failures become planted eval fixtures, scaffolds the pinned contract bundle, and sets the two-clock eval expectation with the conformance report. NOT for adapting an existing project (use adapting-projects-to-fabric), building the Fabric host or orchestrator, or generic agent design where Fabric compatibility is not part of the request.
4
- license: PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0
4
+ license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
5
5
  compatibility: Requires filesystem access and Python 3.9+. Exact schema checks additionally need git, Node.js, pnpm, and the pinned private fabric-agent-contract checkout. Works without those tools in an explicitly degraded structural-check mode. Ships in one plugin with adapting-projects-to-fabric, whose scripts it reuses.
6
6
  metadata:
7
7
  author: PassionCode.ai
8
- version: "0.5.2"
8
+ version: "0.5.4"
9
9
  contract-version: "0.1.0"
10
- contract-commit: "2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f"
10
+ contract-commit: "74d3852f122f5ca5cbc4138a201483531dfa5006"
11
11
  ---
12
12
 
13
13
  # Creating Fabric-compatible agents
@@ -80,6 +80,25 @@ that would show it met, written now, before the implementation. The input corpus
80
80
  authored now: it grows from real traces once the provider runs, and the step-1 fixtures
81
81
  are its seed because a source project's recorded failures count as production.
82
82
 
83
+ **For a PassionCode.ai repository**, the new agent's repository follows the organization's
84
+ [repository standard](https://github.com/passioncode-ai/fabric-workspace/blob/main/knowledge/repository-standard.md) (`knowledge/repository-standard.md`
85
+ in the organization's knowledge base; a clone has it at `fabric-workspace/knowledge/`) from its
86
+ first commit:
87
+
88
+ - `LICENSE`, `COMMERCIAL-LICENSE.md` and `CLA.md` copied byte for byte from the knowledge base's
89
+ `templates/`, and `AGPL-3.0-only OR LicenseRef-PassionCode-Commercial` in every manifest and
90
+ every SKILL.md `license:`; `SECURITY.md` when the repository is public;
91
+ - a README whose first heading is the full name, with `## Quick start for a new teammate`
92
+ (Install; Configure, key names only; MCP, the registration command and one proving tool call,
93
+ verified with a real client in a temporary config; Develop) and `## License`;
94
+ - an `AGENTS.md` that opens with the template's *Read first* block and closes with *After work*,
95
+ and a `CLAUDE.md` whose first line is `@AGENTS.md`.
96
+
97
+ org-index `scripts/check_format.py` reports 0 findings for it before it is called done. **An agent
98
+ someone builds for themselves is not a PassionCode.ai repository:** its licence is its owner's
99
+ choice, nothing about it is published or listed by the organization, and none of these files is
100
+ required of it — though the verified MCP quick start is still how anyone learns to drive it.
101
+
83
102
  ## Step 3 — scaffold the provider bundle
84
103
 
85
104
  Reuse the sibling skill's scaffolder against the new skeleton with the profile chosen at
@@ -93,7 +112,7 @@ python3 <plugin-dir>/skills/adapting-projects-to-fabric/scripts/adapt_project.py
93
112
  --schema-base <immutable-base-uri>
94
113
  ```
95
114
 
96
- Pin exactly contract `0.1.0` at commit `2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f` and
115
+ Pin exactly contract `0.1.0` at commit `74d3852f122f5ca5cbc4138a201483531dfa5006` and
97
116
  read the pinned guide before implementing protocol details. If this skill is installed
98
117
  without its sibling, the scaffolder is absent: create the bundle by hand from the pinned
99
118
  contract's `docs/guides/connecting-compatible-agents.md` and mark the structural check
@@ -2,12 +2,12 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "passioncode",
4
4
  "displayName": "PassionCode.ai",
5
- "version": "0.1.11",
5
+ "version": "0.1.13",
6
6
  "description": "The organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check at session start that keeps the PassionCode.ai skill set current.",
7
7
  "author": {
8
8
  "name": "PassionCode.ai",
9
9
  "url": "https://passioncode.ai/"
10
10
  },
11
11
  "homepage": "https://github.com/passioncode-ai/passioncode",
12
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0"
12
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial"
13
13
  }
@@ -1,15 +1,17 @@
1
1
  'use strict';
2
2
  /**
3
- * The read-first reminder. In a passioncode-ai repository an agent reads the repository's
4
- * AGENTS.md and the organization's CONTRIBUTING.md before its first edit — names, landing
5
- * rules, code region markers, the shared tools. A rule an agent has to remember is a rule it
6
- * forgets in the one repository where it mattered, so the session start says it, in one line,
7
- * and only where it applies. Anything unexpected (no git, no origin, a slow git) prints nothing:
8
- * a reminder must never cost a session.
3
+ * The read-first reminder: the protocol of Fabric ADR-0093. In a passioncode-ai repository an
4
+ * agent reads the organization's knowledge base (fabric-workspace/knowledge/, published at
5
+ * wiki.passioncode.ai/knowledge) and the repository's AGENTS.md before its first edit, and after
6
+ * the work updates the knowledge base page that owns any cross-repository fact it changed. A rule
7
+ * an agent has to remember is a rule it forgets in the one repository where it mattered, so the
8
+ * session start says it, in one line, and only where it applies. Anything unexpected (no git, no
9
+ * origin, a slow git) prints nothing: a reminder must never cost a session.
9
10
  */
10
11
  const { execFileSync } = require('child_process');
11
12
 
12
- const CONTRIBUTING = 'https://github.com/passioncode-ai/.github/blob/main/CONTRIBUTING.md';
13
+ const KNOWLEDGE = 'fabric-workspace/knowledge/';
14
+ const KNOWLEDGE_WEB = 'https://wiki.passioncode.ai/knowledge';
13
15
 
14
16
  /** The GitHub organization an origin URL belongs to, when it is passioncode-ai; else null. */
15
17
  function orgOf(url) {
@@ -30,7 +32,7 @@ function originOf(dir) {
30
32
  /** The one line to print at session start in `dir`, or null. */
31
33
  function rulesLine(dir) {
32
34
  if (!orgOf(originOf(dir))) return null;
33
- return `[passioncode] passioncode-ai repository: read AGENTS.md and the organization's CONTRIBUTING.md (${CONTRIBUTING}) before the first edit — names, landing rules, code region markers.`;
35
+ return `[passioncode] passioncode-ai repository: read the knowledge base (${KNOWLEDGE} or ${KNOWLEDGE_WEB}), then this repository's AGENTS.md, before the first edit; after the work, update the knowledge base page that owns any cross-repository fact you changed.`;
34
36
  }
35
37
 
36
- module.exports = { CONTRIBUTING, orgOf, rulesLine };
38
+ module.exports = { KNOWLEDGE, KNOWLEDGE_WEB, orgOf, rulesLine };
@@ -7,12 +7,12 @@ description: >-
7
7
  PassionCode», «как тут принято», «где записать решение», «как выпустить релиз». Covers the org
8
8
  map, landing (protected and unprotected main, fast-forward, never force-push shared work,
9
9
  never touch another session's work), nightly CI and why a blocked run is not green,
10
- handoffs, decisions, ids and leases, secrets, licensing (source-available, CLA, MIT
11
- schemas), the privacy gate before anything goes public, and releases, versions and pins;
12
- org-index stays the source of truth. NOT for product UX, visual design or copy (super-ux,
10
+ handoffs, decisions, ids and leases, secrets, licensing (AGPL-3.0 or commercial, CLA), the
11
+ repository standard, the privacy gate, and releases, versions and pins; the knowledge base
12
+ stays the source of truth. NOT for product UX, visual design or copy (super-ux,
13
13
  sheleg-design, copywriting), building Fabric agents or services (the fabric-agent-adapter
14
14
  skills), or repositories outside passioncode-ai.
15
- license: PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0
15
+ license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
16
16
  compatibility: Any agent that can read files and run git. The gh CLI and a clone of passioncode-ai/org-index make the checks exact; without them follow the fallbacks in the body.
17
17
  metadata:
18
18
  author: PassionCode.ai
@@ -20,17 +20,33 @@ metadata:
20
20
 
21
21
  # Working in PassionCode repositories
22
22
 
23
- The rules of the `passioncode-ai` organisation live in one place:
24
- [org-index](https://github.com/passioncode-ai/org-index) (private; every member can
25
- read it) — `README.md` for the map, `RULES.md` for the rules, `ONBOARDING.md` for a new
26
- machine. This skill is the checklist that makes those rules reach you while you work.
27
- It summarises; it does not replace. Where it and org-index disagree, **org-index wins**;
28
- where a repository's own `AGENTS.md` is stricter, **that file wins**.
23
+ What belongs to no single repository — the vision, the principles, how to work, the rules, the
24
+ repository standard, the products and the licence — lives in one place: the organization's
25
+ **knowledge base**, `fabric-workspace/knowledge/` in a clone (org-index
26
+ `scripts/clone_all.sh` makes it), published at https://wiki.passioncode.ai/knowledge (sign-in
27
+ required; Fabric ADR-0093). [org-index](https://github.com/passioncode-ai/org-index) (private;
28
+ every member can read it) keeps the map (`repositories.json`), `ONBOARDING.md` and the checks
29
+ (`check_index.py`, `check_names.py`, `check_format.py`). This skill is the checklist that makes
30
+ those rules reach you while you work. It summarises; it does not replace. Where it and the
31
+ knowledge base disagree, **the knowledge base wins**; where a repository's own `AGENTS.md` is
32
+ stricter, **that file wins**.
33
+
34
+ ## 0. The protocol — before and after every piece of work
35
+
36
+ **Before the first edit**, read the knowledge base (at least its `README.md`, `vision.md`,
37
+ `principles.md` and `how-to-work.md`), then the repository's `AGENTS.md`. The session-start hook
38
+ of this plugin prints that line in every passioncode-ai repository.
39
+
40
+ **After the work**, in the same run: update the repository's own docs in the change that changes
41
+ the behaviour; if a fact that crosses repositories changed — a product, a version, a plan row, a
42
+ principle, a rule — update the knowledge base page that owns it (`products.md`, `plans.md`, …);
43
+ land both; then publish (`node scripts/workspace.mjs sync` from a Fabric checkout) or leave it to
44
+ the scheduled sync. A page there is read as true: every claim carries its receipt.
29
45
 
30
46
  ## 1. Before the first edit
31
47
 
32
- 1. Read the repository's `AGENTS.md` (its `CLAUDE.md` imports it). It names the role,
33
- the test command and any local rule.
48
+ 1. Read the knowledge base, then the repository's `AGENTS.md` (its `CLAUDE.md` imports
49
+ it). `AGENTS.md` names the role, the test command and any local rule.
34
50
  2. Find who owns what you are about to change: the table in org-index `README.md`,
35
51
  generated from `repositories.json`. Do not guess an owner from a directory name.
36
52
  3. `git fetch origin`, then work in a worktree from `origin/main` on your own branch
@@ -41,13 +57,14 @@ where a repository's own `AGENTS.md` is stricter, **that file wins**.
41
57
  4. An unmerged branch or a dirty tree you did not create is someone's work in
42
58
  progress. Leave it; ask before touching it.
43
59
 
44
- No org-index clone: `gh repo clone passioncode-ai/org-index`. No access at all: say so,
45
- follow the repository's `AGENTS.md`, and name that you worked from it alone.
60
+ No clone: `gh repo clone passioncode-ai/org-index`, then its `scripts/clone_all.sh` for the
61
+ knowledge base. No access at all: say so, follow the repository's `AGENTS.md`, and name that you
62
+ worked from it alone.
46
63
 
47
64
  Also, before the first edit:
48
65
 
49
66
  - **Read the organization's [CONTRIBUTING.md](https://github.com/passioncode-ai/.github/blob/main/CONTRIBUTING.md)**
50
- — the session-start hook of this plugin prints that line in every passioncode-ai repository.
67
+ — the repository's `AGENTS.md` sends you there in its *Read first* block.
51
68
  - **Names** (Fabric ADR-0090): PassionCode.ai is the organization; **Fabric** is the product,
52
69
  the CEO AI agent; Fabric's tools carry its full name before any short form (Fabric Inbox,
53
70
  Fabric Dashboards, Fabric Switchboard); the Fabric Agent Contract and Adapter make any agent
@@ -121,21 +138,31 @@ not edit a guarded file — say which file and why you stopped.
121
138
  enough. With the Observatory plugin installed, its `handling-secrets` skill does this
122
139
  by slot name without printing the value.
123
140
 
124
- ## 6. Licensing — say it exactly
125
-
126
- | Products | License |
127
- |---|---|
128
- | `fabric-switchboard`, `project-observatory-dashboard`, `fabric-dashboards`, and the contributor tools (`passioncode`, `fabric-agent-adapter`) | `PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0`; a commercial license on request (contact@passioncode.ai) |
129
- | `project-observatory-contract` (the schemas) | MIT, so anyone can implement them |
130
-
131
- - Call these products **source-available**, never "open source", "open-source" or
132
- "MIT". The short line: "Source-available under PolyForm Noncommercial or Internal
133
- Use; commercial license on request."
134
- - Versions already released under MIT stay MIT, and each `LICENSE` names the last one.
135
- Never claim otherwise.
136
- - Contributions are accepted under the repository's `CLA.md`; the PR template carries
137
- the "I agree to CLA.md" box.
138
- - The PolyForm texts are verbatim; never edit them.
141
+ ## 6. Licensing and the repository standard
142
+
143
+ - **Every repository** is open source under the GNU AGPL-3.0, or available under a commercial
144
+ license from PassionCode.ai (contact@passioncode.ai):
145
+ `AGPL-3.0-only OR LicenseRef-PassionCode-Commercial` (Fabric ADR-0092; the knowledge base
146
+ `licensing.md` owns it). Copyright: Siarhei Sheleh. No price or term is stated anywhere.
147
+ - `LICENSE`, `COMMERCIAL-LICENSE.md` and `CLA.md` are copied **byte for byte** from the knowledge
148
+ base's `templates/`; every manifest and SKILL.md `license:` carries the expression.
149
+ - A version released earlier keeps its licence — MIT or PolyForm Noncommercial or Internal Use —
150
+ and the README may say which. Never write that a released version changed.
151
+ - The README's `## License` section uses the knowledge base wording and names the earlier
152
+ licences: "Open source under the GNU AGPL-3.0. A commercial license is available for use that
153
+ does not meet the AGPL's terms — contact@passioncode.ai."
154
+ - Contributions are accepted under the repository's `CLA.md`; the PR template carries the
155
+ "I agree to CLA.md" box.
156
+ - **The repository standard** (the knowledge base `repository-standard.md`): README first heading
157
+ `# <Full name>`, `## Quick start for a new teammate` (Install, Configure, MCP — the registration
158
+ command and one proving call verified with a real client in a temporary config — and Develop)
159
+ and `## License`; `AGENTS.md` opens with the template's *Read first* block and ends with
160
+ *After work*; `CLAUDE.md` starts with `@AGENTS.md`; `SECURITY.md` in public repositories.
161
+ org-index `python3 scripts/check_format.py` checks it (offline: siblings `org-index`,
162
+ `fabric-workspace` and the repository, then `--offline --repo <repo>`); it reports 0 before
163
+ you call a repository done.
164
+ - The operator's own agents are outside the organization and this licence: their licence is the
165
+ operator's choice, and nothing about them is published.
139
166
 
140
167
  Read [publishing](references/publishing.md) when adding or changing a license, a
141
168
  manifest's `license` field, `CLA.md` or a PR template.
@@ -209,4 +236,5 @@ skill's: `super-ux`, `sheleg-design` and `copywriting`.
209
236
 
210
237
  Report: the repository and branch; the landed commit or the PR URL; each gate command
211
238
  with its exit code; the hosted CI state (ran, blocked, or nightly pending); the handoff
212
- path; and the one next task.
239
+ path; the knowledge base page you updated, or that no cross-repository fact changed; and the
240
+ one next task.