@passioncode-ai/passioncode 0.1.21 → 0.1.22
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/CHANGELOG.md +12 -0
- package/family.json +1 -1
- package/package.json +1 -1
- package/payload/.claude-plugin/marketplace.json +2 -2
- package/payload/manifest.json +8 -8
- package/payload/plugins/observatory-log/.claude-plugin/plugin.json +1 -1
- package/payload/plugins/observatory-log/hooks/ask-why.py +1 -1
- package/payload/plugins/observatory-log/skills/explaining-changes/SKILL.md +1 -1
- package/payload/plugins/observatory-log/skills/handling-secrets/SKILL.md +13 -7
- package/payload/plugins/observatory-log/skills/tracking-resources/SKILL.md +2 -2
- package/payload/plugins/passioncode/.claude-plugin/plugin.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.22 - 2026-10-03
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- **Observatory Log is pinned at `v0.13.0`** (plugin 0.14.0; it was `v0.10.0`, plugin 0.13.0),
|
|
8
|
+
the Project Observatory 0.13.0 hook and skills. The hook and the skills hand over the installed
|
|
9
|
+
engine's commands (`project-observatory full findings`, `full doctor`) instead of source-tree
|
|
10
|
+
paths, and the skills' own check runs under the interpreter `full agent install` records. In
|
|
11
|
+
`handling-secrets`, a vault `PROJECT` is the project's folder name and its registry id resolves to
|
|
12
|
+
the same folder. `use_secret.py run` takes `--env`, and `vault.py remove` deletes a slot or only
|
|
13
|
+
its retired archives.
|
|
14
|
+
|
|
3
15
|
## 0.1.21 - 2026-10-03
|
|
4
16
|
|
|
5
17
|
### Changed
|
package/family.json
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"name": "observatory-log",
|
|
23
23
|
"displayName": "Observatory Log",
|
|
24
24
|
"repo": "passioncode-ai/project-observatory-dashboard",
|
|
25
|
-
"ref": "v0.
|
|
25
|
+
"ref": "v0.13.0",
|
|
26
26
|
"kind": "plugin",
|
|
27
27
|
"path": "observatory/engine/skill/plugins/observatory-log",
|
|
28
28
|
"legacyPluginIds": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@passioncode-ai/passioncode",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "The PassionCode.ai agent skill set \u2014 Fabric Agent Adapter, Observatory Log and the organisation's working rules \u2014 for Claude Code and every other agent on the machine, updated as one set.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"passioncode": "bin/passioncode.js"
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"name": "observatory-log",
|
|
24
24
|
"displayName": "Observatory Log",
|
|
25
25
|
"source": "./plugins/observatory-log",
|
|
26
|
-
"version": "0.
|
|
26
|
+
"version": "0.14.0",
|
|
27
27
|
"description": "Records what changed in a watched project at the end of every turn, and asks for the one thing a diff cannot contain: why.",
|
|
28
28
|
"author": {
|
|
29
29
|
"name": "PassionCode.ai",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"name": "passioncode",
|
|
36
36
|
"displayName": "PassionCode.ai",
|
|
37
37
|
"source": "./plugins/passioncode",
|
|
38
|
-
"version": "0.1.
|
|
38
|
+
"version": "0.1.22",
|
|
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",
|
package/payload/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"family": "passioncode",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"release": true,
|
|
5
5
|
"members": [
|
|
6
6
|
{
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"name": "observatory-log",
|
|
35
35
|
"displayName": "Observatory Log",
|
|
36
36
|
"repo": "passioncode-ai/project-observatory-dashboard",
|
|
37
|
-
"ref": "v0.
|
|
38
|
-
"commit": "
|
|
39
|
-
"version": "0.
|
|
37
|
+
"ref": "v0.13.0",
|
|
38
|
+
"commit": "c7a89125edcd5ee1a8141feb55d4aca2c828e834",
|
|
39
|
+
"version": "0.14.0",
|
|
40
40
|
"via": "clone of https://***@github.com/passioncode-ai/project-observatory-dashboard.git",
|
|
41
41
|
"skills": [
|
|
42
42
|
"explaining-changes",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"legacyMarketplaces": [
|
|
50
50
|
"observatory-log"
|
|
51
51
|
],
|
|
52
|
-
"contentHash": "sha256:
|
|
52
|
+
"contentHash": "sha256:3e1218586122889649881d94fdf892f6a51782dc748c26127a9969376ecdf1eb",
|
|
53
53
|
"description": "Records what changed in a watched project at the end of every turn, and asks for the one thing a diff cannot contain: why.",
|
|
54
54
|
"author": {
|
|
55
55
|
"name": "PassionCode.ai",
|
|
@@ -61,16 +61,16 @@
|
|
|
61
61
|
"name": "passioncode",
|
|
62
62
|
"displayName": "PassionCode.ai",
|
|
63
63
|
"repo": "passioncode-ai/passioncode",
|
|
64
|
-
"ref": "v0.1.
|
|
64
|
+
"ref": "v0.1.22",
|
|
65
65
|
"commit": null,
|
|
66
|
-
"version": "0.1.
|
|
66
|
+
"version": "0.1.22",
|
|
67
67
|
"via": "this repository",
|
|
68
68
|
"skills": [
|
|
69
69
|
"working-in-passioncode"
|
|
70
70
|
],
|
|
71
71
|
"legacyPluginIds": [],
|
|
72
72
|
"legacyMarketplaces": [],
|
|
73
|
-
"contentHash": "sha256:
|
|
73
|
+
"contentHash": "sha256:41d5e5549a6fb2ace8f68766c3fad8fc2c72197b2896a8ae934b1a2029eba0ec",
|
|
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",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "observatory-log",
|
|
4
4
|
"displayName": "Observatory Log",
|
|
5
5
|
"description": "Records what changed in a watched project at the end of every turn, and asks for the one thing a diff cannot contain: why.",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.14.0",
|
|
7
7
|
"license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "PassionCode.ai",
|
|
@@ -40,7 +40,7 @@ def main() -> int:
|
|
|
40
40
|
"Observatory could NOT record this turn: " + reason +
|
|
41
41
|
"\n\nThe facts of this turn are not in the ledger. "
|
|
42
42
|
"`store/raw/record-turn.json` holds the same reason, and "
|
|
43
|
-
"
|
|
43
|
+
"`project-observatory full findings` raises it.",
|
|
44
44
|
"suppressOutput": True}))
|
|
45
45
|
return 0
|
|
46
46
|
if r.get("hasWhy"):
|
|
@@ -15,7 +15,7 @@ description: >-
|
|
|
15
15
|
decision with different evidence.
|
|
16
16
|
license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
|
|
17
17
|
metadata:
|
|
18
|
-
version: "0.
|
|
18
|
+
version: "0.14.0"
|
|
19
19
|
compatibility: >-
|
|
20
20
|
Requires an initialized full Project Observatory installation to persist
|
|
21
21
|
records. Uses its MCP server when available in the current host; the bundled
|
|
@@ -9,7 +9,7 @@ description: >-
|
|
|
9
9
|
provider permissions or choosing a project's authentication architecture.
|
|
10
10
|
license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
|
|
11
11
|
metadata:
|
|
12
|
-
version: "0.
|
|
12
|
+
version: "0.14.0"
|
|
13
13
|
compatibility: >-
|
|
14
14
|
Requires an initialized full Project Observatory installation, Python 3.11+
|
|
15
15
|
and local shell access on macOS or Linux. Provider operations additionally
|
|
@@ -27,9 +27,10 @@ names. Never ask the user to paste a credential into the conversation.
|
|
|
27
27
|
`OBSERVATORY_ROOT`, or obtain its path with `project-observatory full-path`.
|
|
28
28
|
Do not guess a checkout location or inspect another account's files.
|
|
29
29
|
2. Select the user's initialized `OBSERVATORY_HOME`. Run
|
|
30
|
-
`
|
|
30
|
+
`project-observatory full doctor`. A missing workspace
|
|
31
31
|
needs the documented onboarding before secret operations.
|
|
32
|
-
3. Run `
|
|
32
|
+
3. Run `"$OBSERVATORY_PYTHON" "$OBSERVATORY_ROOT/tools/skill_check.py" handling-secrets 0.14.0`
|
|
33
|
+
(`full agent install` records that interpreter; the stock macOS `python3` is too old).
|
|
33
34
|
If stale, read the installed skill once and follow its compatible commands.
|
|
34
35
|
Do not turn an unavailable version check into a retry loop.
|
|
35
36
|
4. Inspect names using `tools/use_secret.py names PROJECT` or `tools/vault.py
|
|
@@ -37,8 +38,11 @@ names. Never ask the user to paste a credential into the conversation.
|
|
|
37
38
|
Never read a value file to discover whether it exists.
|
|
38
39
|
|
|
39
40
|
All commands below are Python scripts under `OBSERVATORY_ROOT/tools`. `PROJECT`,
|
|
40
|
-
`ENV` and `NAME` are placeholders for existing user-selected names. `
|
|
41
|
-
|
|
41
|
+
`ENV` and `NAME` are placeholders for existing user-selected names. `PROJECT` is
|
|
42
|
+
the project's folder name; its registry id (`project:<slug>` or the bare slug) is
|
|
43
|
+
accepted and normalised to that folder, and a name two projects claim is refused.
|
|
44
|
+
`ENV` is `local`, `stage` or `prod`; choose production only when the task calls
|
|
45
|
+
for it. A name or note shaped like a credential is refused, never stored.
|
|
42
46
|
|
|
43
47
|
## Use the named door
|
|
44
48
|
|
|
@@ -46,13 +50,14 @@ All commands below are Python scripts under `OBSERVATORY_ROOT/tools`. `PROJECT`,
|
|
|
46
50
|
|---|---|
|
|
47
51
|
| Store a credential supplied locally | `vault.py put PROJECT ENV NAME`, value on stdin |
|
|
48
52
|
| List slots | `vault.py list PROJECT ENV` |
|
|
49
|
-
| Run a command using a slot | `use_secret.py run PROJECT NAME -- COMMAND ARGUMENTS` |
|
|
53
|
+
| Run a command using a slot | `use_secret.py run [--env ENV] PROJECT NAME -- COMMAND ARGUMENTS` (flags before PROJECT) |
|
|
50
54
|
| Receive a value from another local command | `use_secret.py pipe NAME -- COMMAND ARGUMENTS` |
|
|
51
55
|
| Populate a project's ignored environment file | `vault.py inject PROJECT ENV DIRECTORY` |
|
|
52
56
|
| Record an exposure | `vault.py leak PROJECT ENV NAME --where "location and evidence, no value"` |
|
|
53
57
|
| Replace a stored value | `vault.py rotate PROJECT ENV NAME`, replacement on stdin |
|
|
54
58
|
| Close an exposure after revocation and consumer checks | `vault.py settle PROJECT ENV NAME --how "action" --revocation-evidence "receipt" --consumer-evidence "receipt"` |
|
|
55
59
|
| Record an external movement | `vault.py moved PROJECT ENV NAME --at PROVIDER --how "action and evidence"`; add `--settle` with both evidence flags to also close its exposure |
|
|
60
|
+
| Delete a slot, or only the archives a rotation left | `vault.py remove PROJECT ENV NAME` (refused while its exposure is open unless `--force`), or `vault.py remove PROJECT ENV NAME --retired`; both are journalled |
|
|
56
61
|
| Review unresolved exposures or movements | `vault.py leaks` or `vault.py movements PROJECT` |
|
|
57
62
|
|
|
58
63
|
Use the installed command's `--help` for optional flags. Avoid placing a value
|
|
@@ -135,7 +140,8 @@ By default, slots live under the private workspace's `secrets/projects/`.
|
|
|
135
140
|
An explicitly configured `sources.secret_store` or `OBSERVATORY_VAULT_DIR`
|
|
136
141
|
can select a separate private store. Such external stores are excluded from
|
|
137
142
|
workspace backups and need their own backup procedure. `vault.py backup`
|
|
138
|
-
requires a configured gateway backup script
|
|
143
|
+
requires a configured gateway backup script (`backup-secrets.sh` at
|
|
144
|
+
`sources.gateway_root` or in its `bin/`); do not promise encryption,
|
|
139
145
|
keychain storage or scheduled backups when that integration is absent.
|
|
140
146
|
|
|
141
147
|
## When something is unavailable
|
|
@@ -15,7 +15,7 @@ description: >-
|
|
|
15
15
|
the repository.
|
|
16
16
|
license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
|
|
17
17
|
metadata:
|
|
18
|
-
version: "0.
|
|
18
|
+
version: "0.14.0"
|
|
19
19
|
compatibility: >-
|
|
20
20
|
Requires a full Project Observatory installation with organizations.json
|
|
21
21
|
configured; the observatory MCP server or its local CLI. Creating the resource
|
|
@@ -58,7 +58,7 @@ Report each resource with `observatory_propose`:
|
|
|
58
58
|
"targetId": "project:<slug>",
|
|
59
59
|
"patch": {"resources": [{"kind": "ga4-property",
|
|
60
60
|
"identifier": "properties/123456789",
|
|
61
|
-
"account": "accounts/
|
|
61
|
+
"account": "accounts/123456789",
|
|
62
62
|
"url": "https://analytics.google.com/…",
|
|
63
63
|
"note": "web stream for example.com",
|
|
64
64
|
"added_on": "2026-09-27",
|
|
@@ -2,7 +2,7 @@
|
|
|
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.
|
|
5
|
+
"version": "0.1.22",
|
|
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",
|