@passioncode-ai/fabric-agent-adapter 0.5.2 → 0.5.4

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
@@ -6,20 +6,18 @@
6
6
 
7
7
  # Fabric Agent Adapter
8
8
 
9
- > **PassionCode.ai — The agent-agnostic operating system for AI-native teams.**
10
-
11
- **From vibe coding to passion coding.** PassionCode.ai moves the control point from
12
- managing agents one by one to operating Projects. Fabric Agent Adapter is the portable
13
- on-ramp: it helps an existing repository become a compatible, replaceable Provider
14
- without moving the Project onto one proprietary agent runtime.
9
+ **Fabric Agent Adapter** makes any agent Fabric-compatible. Fabric is PassionCode.ai's
10
+ product, the CEO AI agent: you talk to Fabric, and it chooses, binds and runs the agents that
11
+ do the work. This adapter is how an agent becomes one Fabric can bind — three Agent Skills,
12
+ Python and Node reference kits and a live conformance probe for the
13
+ [Fabric Agent Contract](https://github.com/passioncode-ai/fabric-agent-contract). It also works
14
+ on its own: the skills, kits and probe need no Fabric install.
15
15
 
16
16
  [![npm](https://img.shields.io/npm/v/%40passioncode-ai%2Ffabric-agent-adapter)](https://www.npmjs.com/package/@passioncode-ai/fabric-agent-adapter)
17
17
  [![validate](https://github.com/passioncode-ai/fabric-agent-adapter/actions/workflows/validate.yml/badge.svg)](https://github.com/passioncode-ai/fabric-agent-adapter/actions/workflows/validate.yml)
18
- [![license](https://img.shields.io/badge/license-source--available-blue.svg)](LICENSE)
18
+ [![license](https://img.shields.io/badge/license-AGPL--3.0%20or%20commercial-blue.svg)](LICENSE)
19
19
 
20
- Portable Agent Skills that make any agent Fabric-compatible, for the
21
- [Fabric Agent Contract](https://github.com/passioncode-ai/fabric-agent-contract):
22
- `adapting-projects-to-fabric`, `creating-fabric-agents` and
20
+ The skills are `adapting-projects-to-fabric`, `creating-fabric-agents` and
23
21
  `building-fabric-services`.
24
22
 
25
23
  `building-fabric-services` makes an agent a long-lived local service with a dashboard
@@ -52,17 +50,26 @@ For provider bundles the adapting skill helps an agent author:
52
50
  The skill never treats generated files as admission. Fabric contract `0.1.0` does not
53
51
  yet ship the host registry/runtime needed to connect and authorize a live provider.
54
52
 
55
- ## Install
53
+ ## Quick start for a new teammate
56
54
 
57
- The repository and the npm package are public; neither path needs an account.
55
+ ### Install
58
56
 
59
- npm — no GitHub access required:
57
+ With the [PassionCode.ai launcher](https://github.com/passioncode-ai/passioncode) the adapter
58
+ comes with every other PassionCode.ai skill — `npx @passioncode-ai/passioncode@latest update`,
59
+ then restart your agents. Alone, without any account:
60
60
 
61
61
  ```bash
62
62
  npx @passioncode-ai/fabric-agent-adapter # installs every skill into the agents hub ~/.agents/skills
63
63
  npx @passioncode-ai/fabric-agent-adapter --prune-shadow # remove ~/.claude/skills copies that shadow the plugin
64
64
  ```
65
65
 
66
+ Claude Code plugin marketplace:
67
+
68
+ ```text
69
+ /plugin marketplace add passioncode-ai/fabric-agent-adapter
70
+ /plugin install fabric-agent-adapter@fabric-agent-adapter
71
+ ```
72
+
66
73
  Generic Agent Skills clients:
67
74
 
68
75
  ```bash
@@ -71,13 +78,62 @@ npx skills add passioncode-ai/fabric-agent-adapter --skill creating-fabric-agent
71
78
  npx skills add passioncode-ai/fabric-agent-adapter --skill building-fabric-services
72
79
  ```
73
80
 
74
- Claude Code plugin marketplace:
81
+ ### Configure
75
82
 
76
- ```text
77
- /plugin marketplace add passioncode-ai/fabric-agent-adapter
78
- /plugin install fabric-agent-adapter@fabric-agent-adapter
83
+ Nothing: no account, no key, no environment variable. A service built with the kit creates
84
+ its own token file (mode 600) in its data directory.
85
+
86
+ ### MCP
87
+
88
+ The adapter is not an MCP server; it builds them. Its sample service serves every capability
89
+ as the MCP tool of its name (`fabric-interop/0.1`), so the proof is a real client calling one.
90
+ With Python 3.9+ and the Claude Code CLI, in a throwaway directory and a temporary MCP config
91
+ (your own Claude Code configuration is not read or written):
92
+
93
+ ```bash
94
+ KIT=plugins/fabric-agent-adapter/skills/building-fabric-services/scripts # or ~/.agents/skills/building-fabric-services/scripts
95
+ DATA=$(mktemp -d); SERVICES=$(mktemp -d); WORK=$(mktemp -d)
96
+ python3 "$KIT/sample_service.py" serve --port 47190 --data-dir "$DATA" &
97
+ python3 "$KIT/sample_service.py" register --port 47190 --data-dir "$DATA" --services-dir "$SERVICES"
98
+ python3 "$KIT/check_service.py" sample --services-dir "$SERVICES" # exit 0: no FAIL
99
+ # Register the service for one client run; the token goes in a header, never in argv.
100
+ python3 - "$DATA/service.token" "$WORK/mcp.json" <<'EOF'
101
+ import json, os, sys
102
+ token = open(sys.argv[1]).read().strip()
103
+ with os.fdopen(os.open(sys.argv[2], os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600), "w") as f:
104
+ json.dump({"mcpServers": {"sample": {"type": "http", "url": "http://127.0.0.1:47190/mcp",
105
+ "headers": {"Authorization": "Bearer " + token}}}}, f)
106
+ EOF
107
+ (cd "$WORK" && claude -p "Call the tool mcp__sample__sample_echo with text 'ping' and reply with only the text it returns." \
108
+ --strict-mcp-config --mcp-config "$WORK/mcp.json" --allowedTools mcp__sample__sample_echo --max-turns 3 < /dev/null)
109
+ # -> ping
110
+ kill %1
111
+ ```
112
+
113
+ Verified 2026-09-30 with Claude Code 2.1.285: the CLI connected to the sample over
114
+ streamable HTTP, called `sample.echo` and printed `ping`. The probe prints one line per rule —
115
+ `PASS`, `FAIL` or `NOT_RUN` with its evidence — and exits 1 on any `FAIL`; run it against your
116
+ own service by its id once its installer has written the descriptor.
117
+ `FABRIC_REAL_CLIENT=1 python3 -m unittest discover -s test -p test_real_client.py` repeats the connection check
118
+ (every sample tool listed, no model call) in the test suite.
119
+
120
+ ### Develop
121
+
122
+ There is no build step and no dependency beyond Python 3.9+ and Node.js:
123
+
124
+ ```bash
125
+ npm test # validate.py, the Python unit tests, the Node kit tests
126
+ python3 -m unittest discover -s test -v
127
+ python3 test/validate.py
128
+ claude plugin validate ./plugins/fabric-agent-adapter --strict
129
+ claude plugin validate . --strict
79
130
  ```
80
131
 
132
+ `test/validate.py` reads every SKILL.md front matter as strictly as a YAML parser does; an
133
+ unquoted value holding `: ` fails it. `python3 test/validate.py --frontmatter <SKILL.md ...>`
134
+ checks copies installed elsewhere, such as `~/.agents/skills/*/SKILL.md`. Start in
135
+ [AGENTS.md](AGENTS.md); contributions follow [CONTRIBUTING.md](CONTRIBUTING.md).
136
+
81
137
  ## Use
82
138
 
83
139
  Ask the agent explicitly:
@@ -118,42 +174,12 @@ python3 "$SKILL_DIR/scripts/adapt_project.py" check /path/to/project \
118
174
  Scaffolding is non-destructive by default. It writes only the paths declared in the
119
175
  [delivery brief](docs/evidence/specs/2026-08-27-brief.md) and refuses collisions.
120
176
 
121
- ## Verify one service (newcomer path)
122
-
123
- After installing (above), with Python 3.9+ and no other dependency:
124
-
125
- ```bash
126
- KIT=plugins/fabric-agent-adapter/skills/building-fabric-services/scripts # or ~/.agents/skills/building-fabric-services/scripts
127
- DATA=$(mktemp -d); SERVICES=$(mktemp -d)
128
- python3 "$KIT/sample_service.py" serve --port 47190 --data-dir "$DATA" &
129
- python3 "$KIT/sample_service.py" register --port 47190 --data-dir "$DATA" --services-dir "$SERVICES"
130
- python3 "$KIT/check_service.py" sample --services-dir "$SERVICES" # exit 0: no FAIL
131
- kill %1
132
- ```
133
-
134
- The probe prints one line per rule — `PASS`, `FAIL` or `NOT_RUN` with its evidence — and
135
- exits 1 on any `FAIL`. Run it against your own service by its id once its installer has
136
- written the descriptor.
137
-
138
- ## Validate this repository
139
-
140
- ```bash
141
- python3 -m unittest discover -s test -v
142
- python3 test/validate.py
143
- claude plugin validate ./plugins/fabric-agent-adapter --strict
144
- claude plugin validate . --strict
145
- ```
146
-
147
- `test/validate.py` reads every SKILL.md front matter as strictly as a YAML parser does; an
148
- unquoted value holding `: ` fails it. `python3 test/validate.py --frontmatter <SKILL.md ...>`
149
- checks copies installed elsewhere, such as `~/.agents/skills/*/SKILL.md`.
150
-
151
177
  ## Contract pin
152
178
 
153
179
  The one pin is [`fabric-contract.lock.json`](fabric-contract.lock.json):
154
180
 
155
181
  - version: `0.1.0`
156
- - commit: `2ea54f70c161c8b3bf7ec3c567735c7a2d4ce12f`
182
+ - commit: `74d3852f122f5ca5cbc4138a201483531dfa5006`
157
183
 
158
184
  Every other mention of the contract revision — this section, the skills' metadata, the
159
185
  skill card, `adapt_project.py` — must equal it; `python3 test/validate.py` fails a tree
@@ -162,9 +188,8 @@ new adapter release, fixture review, and a complete validation run.
162
188
 
163
189
  ## License
164
190
 
165
- Source-available under PolyForm Noncommercial or Internal Use; commercial license on
166
- request (contact@passioncode.ai). SPDX:
167
- `PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0` — see
168
- [LICENSE](LICENSE). Versions up to and including v0.4.2 (on GitHub and on npm) were
169
- released under the MIT License and remain available under it. Contributions are accepted under
170
- [CLA.md](CLA.md) ([CONTRIBUTING.md](CONTRIBUTING.md)).
191
+ Open source under the [GNU AGPL-3.0](LICENSE). A [commercial license](COMMERCIAL-LICENSE.md) is
192
+ available for use that does not meet the AGPL's terms — contact@passioncode.ai.
193
+ Versions before 0.5.3 were released under PolyForm Noncommercial or Internal Use (v0.4.3 to
194
+ v0.5.2) and MIT (v0.4.2 and earlier); each keeps the licence it was released under.
195
+ Contributions are accepted under [CLA.md](CLA.md) ([CONTRIBUTING.md](CONTRIBUTING.md)).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@passioncode-ai/fabric-agent-adapter",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "description": "Create Fabric-compatible agents, run them as always-alive local services with dashboards (fabric-service/0.1), and adapt existing projects to the Fabric Agent Contract. This package is the installer CLI.",
5
5
  "scripts": {
6
6
  "test": "python3 test/validate.py && python3 -m unittest discover -s test -q && node --test 'test/*.test.mjs'"
@@ -16,6 +16,8 @@
16
16
  "plugins",
17
17
  "README.md",
18
18
  "LICENSE",
19
+ "COMMERCIAL-LICENSE.md",
20
+ "CLA.md",
19
21
  "CHANGELOG.md",
20
22
  "SECURITY.md",
21
23
  "!**/__pycache__/**",
@@ -23,7 +25,7 @@
23
25
  ],
24
26
  "repository": "github:passioncode-ai/fabric-agent-adapter",
25
27
  "homepage": "https://github.com/passioncode-ai/fabric-agent-adapter",
26
- "license": "PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0",
28
+ "license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial",
27
29
  "author": {
28
30
  "name": "PassionCode.ai",
29
31
  "url": "https://passioncode.ai/"
@@ -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