@passioncode-ai/passioncode 0.1.11 → 0.1.12

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.3",
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.12",
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.3",
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.12",
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.12",
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.3",
11
+ "commit": "951b2910e450c491078486ddf022489d4742bbaf",
12
+ "version": "0.5.3",
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:1b9d3028d72947aa3dc99f2cc979ffb9a6710a99ab0a89773f7de9ce673be210",
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.12",
65
65
  "commit": null,
66
- "version": "0.1.11",
66
+ "version": "0.1.12",
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:f0be91c0c114b6b5af7e9ae74459eb1c60a433ee0515b11468917f44fe4d6af0",
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.3",
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,11 +1,11 @@
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.3"
9
9
  contract-version: "0.1.0"
10
10
  contract-commit: "2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f"
11
11
  ---
@@ -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:
@@ -11,11 +11,11 @@ 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.3"
19
19
  contract-version: "0.1.0"
20
20
  extension: "fabric-service/0.1"
21
21
  extension-commit: "2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f"
@@ -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,11 +1,11 @@
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.3"
9
9
  contract-version: "0.1.0"
10
10
  contract-commit: "2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f"
11
11
  ---
@@ -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
@@ -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.12",
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.
@@ -13,41 +13,50 @@ change to a license, a manifest's `license` field, `CLA.md` or a PR template.
13
13
 
14
14
  ## The license, file by file
15
15
 
16
- The source-available expression is
17
- `PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0`; a commercial
18
- license is offered on request at contact@passioncode.ai. The schemas in
19
- `project-observatory-contract` are MIT instead. To relicense a repository, copy the
20
- `LICENSE` of one already relicensed (this launcher's, for instance) and change only the
21
- MIT-history sentence — the copyright line and the Required Notice stay as they are.
16
+ Every repository is open source under the GNU AGPL-3.0, or available under a commercial
17
+ license from PassionCode.ai (contact@passioncode.ai): SPDX
18
+ `AGPL-3.0-only OR LicenseRef-PassionCode-Commercial` (Fabric ADR-0092). The owning page is the
19
+ knowledge base's `licensing.md`; the file list is its `repository-standard.md`, and org-index
20
+ `scripts/check_format.py` (rules F7–F11) checks it. The three licence files are **copied byte
21
+ for byte** from the knowledge base's `templates/` — never retyped, reflowed or "fixed".
22
22
 
23
23
  | File | What it carries |
24
24
  |---|---|
25
- | `LICENSE` | the copyright line, the two licenses, a one-paragraph summary marked as not part of either license, one sentence naming which earlier releases stay MIT, the Required Notice, then both PolyForm texts verbatim |
26
- | `CLA.md` | the contributor license agreement, at the repository root |
27
- | `CONTRIBUTING.md` | says contributions are accepted under `CLA.md` |
25
+ | `LICENSE` | `templates/LICENSE-AGPL-3.0.txt`, the unmodified AGPL-3.0 text (SHA-256 `0d96a4ff…abcb0`) |
26
+ | `COMMERCIAL-LICENSE.md` | `templates/COMMERCIAL-LICENSE.md` |
27
+ | `CLA.md` | `templates/CLA.md`, in every repository, private ones included |
28
+ | `SECURITY.md` | every public repository: report privately to contact@passioncode.ai |
29
+ | `CONTRIBUTING.md` | only when the repository adds rules; says contributions are accepted under `CLA.md` |
28
30
  | `.github/pull_request_template.md` | a checkbox "I agree to CLA.md"; any existing template content is kept |
29
- | `package.json` | `"license"` set to the SPDX expression |
31
+ | `package.json` | `"license"` set to the SPDX expression; `files` ships `LICENSE` and `COMMERCIAL-LICENSE.md` |
30
32
  | `.claude-plugin/plugin.json`, marketplace entries | `"license"` set to the SPDX expression |
31
33
  | SKILL.md front matter | `license:` set to the SPDX expression |
32
- | `pyproject.toml` | `license` as an SPDX expression (PEP 639), which needs `setuptools>=77` in `build-system` |
33
- | `Cargo.toml` | `license-file = "LICENSE"` instead of `license`, and `publish = false` |
34
+ | `pyproject.toml`, `Cargo.toml` | `license = "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial"` |
34
35
 
35
- - The PolyForm texts are copied verbatim. Never edit, abridge or "fix" them.
36
- - The MIT sentence names the real last MIT release — for example "Versions up to and
37
- including v0.8.1 of this repository were released under the MIT License; those
38
- releases remain available under MIT." For a repository with no release: "Commits
39
- before <sha> …".
40
- - A published MIT release stays MIT. Never write that it changed.
36
+ - A version released earlier keeps the licence it was released under — MIT or PolyForm
37
+ Noncommercial or Internal Use. Never write that it changed; the README may say which.
38
+ - Third-party code keeps its own licence and notice (vendored dependencies, imported templates).
39
+ - The operator's own agents are outside the organization and outside this licence: their
40
+ licence is the operator's choice, and nothing about them is published.
41
41
 
42
42
  ## Wording
43
43
 
44
- - The products are **source-available**. Never "open source", "open-source" or "MIT"
45
- for them — in a README, the site, the profile, a description or JSON-LD.
46
- - The short line: "Source-available under PolyForm Noncommercial or Internal Use;
47
- commercial license on request."
48
- - The tagline is "The agent-agnostic operating system for AI-native teams." and "A
49
- toolkit for AI-native teams."; the category line is "From vibe coding to passion
50
- coding."
44
+ - The README section, word for word apart from the versions:
45
+
46
+ ```markdown
47
+ ## License
48
+
49
+ Open source under the [GNU AGPL-3.0](LICENSE). A [commercial license](COMMERCIAL-LICENSE.md) is
50
+ available for use that does not meet the AGPL's terms — contact@passioncode.ai.
51
+ Versions before <first AGPL version> were released under <MIT | PolyForm Noncommercial or Internal Use>.
52
+ ```
53
+
54
+ - "Source-available" and the PolyForm expression describe past releases only; never state
55
+ them as the current licence.
56
+ - No price or term for the commercial licence is stated anywhere; point to
57
+ contact@passioncode.ai.
58
+ - Positioning and names come from the knowledge base (`vision.md`, `principles.md` §2); do not
59
+ restate a tagline from memory.
51
60
 
52
61
  ## The privacy gate
53
62
 
@@ -70,7 +79,8 @@ MIT-history sentence — the copyright line and the Required Notice stay as they
70
79
  - Product metadata: author and owner **PassionCode.ai**, URL `https://passioncode.ai/`.
71
80
  The site names the author by first name only; do not add full names or biographies to
72
81
  product surfaces.
73
- - Public documents do not link private repositories. org-index may be linked for the
74
- map and the rules only.
82
+ - Public documents do not link private repositories. org-index and the knowledge base
83
+ (fabric-workspace `knowledge/`, published at wiki.passioncode.ai/knowledge) may be linked for
84
+ the map and the rules only.
75
85
  - Security and conduct contact: contact@passioncode.ai, plus GitHub private
76
86
  vulnerability reporting on a public repository.