@passioncode-ai/passioncode 0.1.10 → 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.
Files changed (24) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/CLA.md +28 -0
  3. package/COMMERCIAL-LICENSE.md +11 -0
  4. package/LICENSE +661 -155
  5. package/README.md +16 -13
  6. package/family.json +1 -1
  7. package/package.json +4 -2
  8. package/payload/.claude-plugin/marketplace.json +4 -4
  9. package/payload/manifest.json +10 -10
  10. package/payload/plugins/fabric-agent-adapter/.claude-plugin/plugin.json +2 -2
  11. package/payload/plugins/fabric-agent-adapter/skills/adapting-projects-to-fabric/SKILL.md +25 -4
  12. package/payload/plugins/fabric-agent-adapter/skills/adapting-projects-to-fabric/scripts/adapt_project.py +1 -1
  13. package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/SKILL.md +24 -3
  14. package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/references/interop.md +24 -6
  15. package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/references/protocol.md +1 -1
  16. package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/check_service.py +10 -1
  17. package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric-interop.mjs +8 -1
  18. package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric_interop.py +23 -1
  19. package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/sample_service.py +3 -0
  20. package/payload/plugins/fabric-agent-adapter/skills/creating-fabric-agents/SKILL.md +23 -4
  21. package/payload/plugins/passioncode/.claude-plugin/plugin.json +2 -2
  22. package/payload/plugins/passioncode/hooks/repo-rules.js +11 -9
  23. package/payload/plugins/passioncode/skills/working-in-passioncode/SKILL.md +59 -31
  24. package/payload/plugins/passioncode/skills/working-in-passioncode/references/publishing.md +37 -27
@@ -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.