@prismer/runtime 2.0.8 → 2.2.55

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 (119) hide show
  1. package/CHANGELOG.md +3430 -0
  2. package/README.md +34 -12
  3. package/apc/skills/FIELD-DICTIONARY.md +111 -0
  4. package/apc/skills/bug-reproduce/SKILL.md +150 -0
  5. package/apc/skills/bug-reproduce/skill.json +96 -0
  6. package/apc/skills/code-review/SKILL.md +198 -0
  7. package/apc/skills/code-review/skill.json +124 -0
  8. package/apc/skills/design-review/SKILL.md +122 -0
  9. package/apc/skills/design-review/skill.json +88 -0
  10. package/apc/skills/doc-sync/SKILL.md +168 -0
  11. package/apc/skills/doc-sync/skill.json +81 -0
  12. package/apc/skills/env-doctor/SKILL.md +194 -0
  13. package/apc/skills/env-doctor/skill.json +209 -0
  14. package/apc/skills/git-ops/SKILL.md +189 -0
  15. package/apc/skills/git-ops/skill.json +94 -0
  16. package/apc/skills/impact-trace/SKILL.md +168 -0
  17. package/apc/skills/impact-trace/skill.json +104 -0
  18. package/apc/skills/observability/SKILL.md +195 -0
  19. package/apc/skills/observability/skill.json +116 -0
  20. package/apc/skills/release-db-config-sync/SKILL.md +186 -0
  21. package/apc/skills/release-db-config-sync/skill.json +109 -0
  22. package/apc/skills/release-ota-promote/SKILL.md +195 -0
  23. package/apc/skills/release-ota-promote/skill.json +176 -0
  24. package/apc/skills/release-preflight/SKILL.md +174 -0
  25. package/apc/skills/release-preflight/skill.json +175 -0
  26. package/apc/skills/release-rollback/SKILL.md +214 -0
  27. package/apc/skills/release-rollback/skill.json +230 -0
  28. package/apc/skills/release-tag/SKILL.md +194 -0
  29. package/apc/skills/release-tag/skill.json +94 -0
  30. package/apc/skills/releasing-prod/SKILL.md +49 -0
  31. package/apc/skills/releasing-test/SKILL.md +135 -0
  32. package/apc/skills/sdk-release/SKILL.md +200 -0
  33. package/apc/skills/spec-intake/SKILL.md +169 -0
  34. package/apc/skills/spec-intake/skill.json +93 -0
  35. package/apc/skills/test-result-feedback/SKILL.md +239 -0
  36. package/apc/skills/test-result-feedback/skill.json +193 -0
  37. package/apc/skills/test-runner/SKILL.md +169 -0
  38. package/apc/skills/test-runner/skill.json +103 -0
  39. package/apc/skills/ui-align/SKILL.md +209 -0
  40. package/apc/skills/ui-align/skill.json +114 -0
  41. package/apc/skills/ui-canvas/SKILL.md +148 -0
  42. package/apc/skills/ui-canvas/skill.json +127 -0
  43. package/built-in-skills/agent-coordination/SKILL.md +59 -37
  44. package/built-in-skills/agent-meta/SKILL.md +1 -0
  45. package/built-in-skills/assets/SKILL.md +8 -6
  46. package/built-in-skills/browser-use/SKILL.md +93 -0
  47. package/built-in-skills/canvas-design/SKILL.md +1 -0
  48. package/built-in-skills/claim-agent-ownership/SKILL.md +3 -2
  49. package/built-in-skills/claude-api/SKILL.md +1 -0
  50. package/built-in-skills/codebase-design/DEEPENING.md +37 -0
  51. package/built-in-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  52. package/built-in-skills/codebase-design/LICENSE +21 -0
  53. package/built-in-skills/codebase-design/SKILL.md +116 -0
  54. package/built-in-skills/conversation-compaction/SKILL.md +114 -0
  55. package/built-in-skills/council-creator/SKILL.md +426 -0
  56. package/built-in-skills/diagnosing-bugs/LICENSE +21 -0
  57. package/built-in-skills/diagnosing-bugs/SKILL.md +136 -0
  58. package/built-in-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  59. package/built-in-skills/doc-coauthoring/SKILL.md +1 -0
  60. package/built-in-skills/document-generation/SKILL.md +105 -0
  61. package/built-in-skills/domain-modeling/ADR-FORMAT.md +47 -0
  62. package/built-in-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  63. package/built-in-skills/domain-modeling/LICENSE +21 -0
  64. package/built-in-skills/domain-modeling/SKILL.md +76 -0
  65. package/built-in-skills/frontend-design/SKILL.md +1 -0
  66. package/built-in-skills/human-approval/SKILL.md +17 -2
  67. package/built-in-skills/image-generate/SKILL.md +103 -302
  68. package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +289 -0
  69. package/built-in-skills/ingest/SKILL.md +13 -45
  70. package/built-in-skills/internal-comms/SKILL.md +1 -0
  71. package/built-in-skills/liteparse/SKILL.md +130 -110
  72. package/built-in-skills/mcp-builder/SKILL.md +1 -0
  73. package/built-in-skills/memory/SKILL.md +420 -55
  74. package/built-in-skills/memory-dream/SKILL.md +339 -0
  75. package/built-in-skills/office-artifacts/SKILL.md +17 -4
  76. package/built-in-skills/okr/SKILL.md +154 -0
  77. package/built-in-skills/persona/SKILL.md +81 -0
  78. package/built-in-skills/persona-generator/SKILL.md +296 -0
  79. package/built-in-skills/pkf-svg/SKILL.md +253 -0
  80. package/built-in-skills/pkf-writing/SKILL.md +236 -0
  81. package/built-in-skills/prismer-im-collab/SKILL.md +26 -6
  82. package/built-in-skills/proactivity/SKILL.md +84 -0
  83. package/built-in-skills/remotion/SKILL.md +431 -0
  84. package/built-in-skills/role-builder/SKILL.md +203 -0
  85. package/built-in-skills/role-builder/scripts/author-role.mjs +334 -0
  86. package/built-in-skills/role-builder/scripts/ingest-role.mjs +223 -0
  87. package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +290 -0
  88. package/built-in-skills/role-builder/scripts/operation-harness.mjs +267 -0
  89. package/built-in-skills/skill-authoring/SKILL.md +110 -100
  90. package/built-in-skills/skill-authoring/skill.json +3 -3
  91. package/built-in-skills/skill-builder/SKILL.md +171 -0
  92. package/built-in-skills/skill-builder/scripts/ingest.mjs +265 -0
  93. package/built-in-skills/skill-creator/SKILL.md +165 -423
  94. package/built-in-skills/skill-creator/references/external-library-import.md +110 -0
  95. package/built-in-skills/skill-creator/scripts/import-library.mjs +475 -0
  96. package/built-in-skills/slack-gif-creator/SKILL.md +20 -0
  97. package/built-in-skills/tasks/SKILL.md +38 -23
  98. package/built-in-skills/tdd/LICENSE +21 -0
  99. package/built-in-skills/tdd/SKILL.md +110 -0
  100. package/built-in-skills/tdd/mocking.md +59 -0
  101. package/built-in-skills/tdd/refactoring.md +10 -0
  102. package/built-in-skills/tdd/tests.md +61 -0
  103. package/built-in-skills/team/SKILL.md +2 -1
  104. package/built-in-skills/web-artifacts-builder/SKILL.md +1 -0
  105. package/built-in-skills/webapp-testing/SKILL.md +1 -0
  106. package/built-in-skills/wechat-pay/SKILL.md +59 -0
  107. package/dist/cli.cjs +71872 -19960
  108. package/dist/cli.js +71803 -19846
  109. package/dist/index.cjs +72010 -19966
  110. package/dist/index.d.cts +4258 -712
  111. package/dist/index.d.ts +4258 -712
  112. package/dist/index.js +72156 -20118
  113. package/package.json +37 -6
  114. package/plugins/memory/prismer/__init__.py +1211 -0
  115. package/plugins/memory/prismer/plugin.yaml +8 -0
  116. package/plugins/memory/prismer/tool-schemas.generated.json +249 -0
  117. package/plugins/tools/prismer-recall/__init__.py +282 -0
  118. package/plugins/tools/prismer-recall/plugin.yaml +15 -0
  119. package/built-in-skills/memory-curation/SKILL.md +0 -135
@@ -1,124 +1,134 @@
1
1
  ---
2
2
  name: skill-authoring
3
- description: Generate Prismer-compliant skill drafts from user intent, documentation URLs, existing code, or service endpoints. Use whenever the user says "make this a skill", "package this workflow", "create a skill for X", or wants to capture a repeatable workflow into a reusable artifact. Outputs a multi-file manifest (SKILL.md + skill.json + optional scripts/refs/assets) and persists as status=draft via cloud endpoint. Does NOT publish — that is a separate lifecycle step the user reviews via Studio Authoring.
3
+ scope: common
4
+ description: Low-level helper for the DRAFT-GATED (review) tier of skill authoring — it is NOT the entry point for creating skills. To make/build/author a skill, use `skill-creator` (the single canonical skill author). This page only documents skill-creator's draft tier — generating a `status=draft` skill via `POST /api/im/skills/draft` (`cloud skill draft create`) for human review in Studio Authoring, plus the skill.json + sampleTasks/acceptanceCriteria test contract. Do NOT route here when the user wants to create a skill — route to skill-creator and add `--draft` only when human review is required.
4
5
  license: MIT
5
6
  compatibility:
6
7
  - prismer-sdk
7
8
  - hermes
8
- - openclaw
9
9
  - claude-code
10
10
  - codex
11
11
  ---
12
12
 
13
- # Skill Authoring (Prismer)
14
-
15
- You generate Prismer-standard skill drafts. You do NOT publish — that's a separate
16
- lifecycle step the user reviews via Studio Authoring (`/evolution → Studio → Authoring`).
17
-
18
- ## Pipeline
19
-
20
- 1. **Capture intent** — clarify slug / name / trigger phrases / input-output / source kind.
21
- The four valid source kinds are:
22
- - `inline-spec` — extract from the active conversation context
23
- - `doc-url` — fetch markdown / OpenAPI / README from a URL
24
- - `code-source` — grep existing repo paths and bundle matched snippets
25
- - `service-endpoint`— probe an HTTP / MCP server's tool/endpoint catalog
26
- 2. **Fetch sources** — based on source kind:
27
- - `inline-spec`: extract directly from the chat history; do not call out
28
- - `doc-url`: `cloud load <url>` → returns compressed reference text
29
- (positional URL arg — there is NO `--url` flag)
30
- - `code-source`: `cloud code grep <pattern> --repo <abs-path>` → returns
31
- matched snippets to bundle as `references/*`
32
- - `service-endpoint`: `cloud service introspect <url>` → returns tool /
33
- endpoint list to translate into a SKILL.md workflow
34
- 3. **Compose manifest v1** — write:
35
- - `SKILL.md` (frontmatter `name`/`description`/`license`/`compatibility` +
36
- a body that follows Anthropic skill-creator's progressive-disclosure pattern)
37
- - `skill.json` (structured `SkillPackageSpec` — see release201/07 §2.6)
38
- - Optional `scripts/`, `references/`, `assets/`
39
- 4. **Submit draft** — `cloud skill draft create --slug <slug> --manifest <path>`
40
- which calls `POST /api/im/skills/draft`. The cloud server runs the 7 validation
41
- gates and returns `{ id, slug, manifestRevision, reviewTaskId }` on success.
42
- 5. **Report draft id** — surface the draft id back to the user; do NOT auto-publish.
43
-
44
- ## Scenario 1 — API doc / URL → skill + callable script + auto tests
45
-
46
- This is the canonical, quantifiable path (release201/24). When the user gives
47
- you an API document, an OpenAPI/Swagger spec, or a doc URL and asks to "make
48
- this a skill", produce a draft that can be VERIFIED by real dispatch — not just
49
- prose. Generate ALL of:
50
-
51
- 1. **`SKILL.md`** — workflow describing when/how to call the API, with the
52
- concrete endpoints, auth, and the script entrypoint.
53
- 2. **`scripts/call-api.*`** — a real, runnable script (Node `.ts`/`.mjs`, or
54
- `.sh` using curl) that performs the API call. Read inputs from argv / env;
55
- print the result to stdout. This is what the eval session actually exercises.
56
- 3. **`skill.json`** — the `SkillPackageSpec` with:
57
- - `runtime.kind = 'inline-script'` (or `'http-endpoint'`), `runtime.requires`
58
- declaring `bins`/`env` the script needs (e.g. `env: ["EXAMPLE_API_KEY"]`).
59
- - `inputs` / `outputs` describing the call contract.
60
- - **`sampleTasks[]`** — at least 2 concrete tasks. EACH MUST have
61
- `acceptanceCriteria[]` written as substrings/regex that the dispatch
62
- OUTPUT must contain (e.g. `"\"status\":\\s*200"`, `"results"`). These ARE
63
- the auto-generated mock tests — the daemon scorer matches them against the
64
- real dispatch output (release201/24 §2.1). A sampleTask with no
65
- acceptanceCriteria is scored `inconclusive` (NOT a pass), so always write
66
- them.
67
- 4. **`references/<api>.md`** — the compressed `cloud load <url>` /
68
- `cloud service introspect <url>` output, so the workflow is grounded.
69
-
70
- Quantifiable acceptance: the skill is "good" when its eval run pass-rate (real
71
- dispatch of each sampleTask, scored against acceptanceCriteria) meets the
72
- lifecycle threshold. Write criteria that are tight enough to catch a broken
73
- call but not so tight they depend on volatile data.
13
+ # Skill Authoring — the draft-gated tier of `skill-creator`
74
14
 
75
- > Derive acceptanceCriteria from the spec: required response fields, status
76
- > codes, schema keys. If the spec lacks examples, add a criterion asserting the
77
- > script exits 0 and emits non-empty JSON, plus a field-presence check.
15
+ > **Not an authoring entry point.** Creating or editing a skill is the job of
16
+ > **`skill-creator`** the single canonical skill author. This page only
17
+ > documents one of skill-creator's two publish trust tiers (**draft-gated**),
18
+ > for the case where a skill must be reviewed by a human before it goes live.
19
+ > If the user says "make this a skill" / "create a skill for X", **use
20
+ > `skill-creator`**, not this.
21
+
22
+ ## Where this fits
23
+
24
+ `skill-creator` drives the full lifecycle author→validate→test→package→publish.
25
+ At the publish step there are two trust tiers ([[16-skill-role-authoring-as-agent-capability]] §5.3):
78
26
 
79
- ## Boundaries
27
+ - **Direct create (default)** — `cloud skill create ./<dir>` → `status=active`,
28
+ `publishScope=workspace` (**private**, installable — NOT the public marketplace).
29
+ Putting it in the marketplace is a separate `cloud skill publish`. Under `skill-builder`.
30
+ - **Draft-gated (explicit, this page)** — `cloud skill draft create` →
31
+ `status=draft`, Studio Authoring reviews and promotes it. Opt into this **only
32
+ when human review is required** — the default is direct publish (decision 4,
33
+ locked 2026-06-24).
80
34
 
81
- - DO NOT call `POST /api/im/skills` directly it bypasses draft state
82
- - DO NOT modify existing non-draft skills (use `skill-creator` reference if the
83
- user asks "edit existing skill")
84
- - DO NOT trigger publish / share — the user reviews drafts in Studio Authoring
85
- - Reference Anthropic skill-creator at `/built-in-skills/skill-creator/SKILL.md`
86
- for "how to write a good SKILL.md" patterns (progressive disclosure, allowed
87
- tool surface, etc.). Treat it as documentation, not as an executor.
35
+ Both tiers are reached from inside `skill-creator`; this is a publish-verb
36
+ choice, not a separate skill to author in.
88
37
 
89
- ## Quality gates (self-check before submit)
38
+ ## Draft submission (the review-gated path)
90
39
 
91
- The cloud server runs the 7 gates below at `createDraft` time and rejects with
92
- HTTP 400 on any blocking failure. Run the same checks locally before POSTing:
40
+ When the workflow requires human review before a skill is live, submit a draft
41
+ instead of publishing directly:
42
+
43
+ ```bash
44
+ cloud skill draft create ./<bundle-dir> # optional: --workspace-id <id> --json
45
+ # → POST /api/im/skills/draft. Cloud reads the directory, runs the 7 validation
46
+ # gates, and returns { id, slug, status: draft }. Does NOT publish.
47
+ ```
48
+
49
+ > ⚠️ **`<bundle-dir>` is a directory** holding `SKILL.md` + `skill.json` (+ an
50
+ > optional `scripts/`). The CLI reads and packages the directory on every run, so
51
+ > edits on disk take effect immediately — there is no separate manifest to
52
+ > regenerate. There is **no** `--slug` / `--manifest` flag; the slug is taken from
53
+ > the SKILL.md frontmatter `name`.
54
+
55
+ The draft lands in `status=draft`; the workspace owner reviews and promotes it
56
+ via Studio Authoring (`/evolution → Studio → Authoring`). Do **not** auto-publish
57
+ or chain into install — promotion is the owner's call.
58
+
59
+ > Do NOT call `POST /api/im/skills` (direct publish) when the intent is review-gated —
60
+ > that bypasses the draft state. Use `--draft` deliberately.
61
+
62
+ ## `skill.json` — where security + the test contract live
63
+
64
+ **Read this first — it is the #1 draft-tier gotcha.** The bundle must contain a
65
+ `skill.json` alongside `SKILL.md` (cloud locates each file by name, so a
66
+ `scripts/` dir sorted in between is fine). Cloud reads `security` and the test
67
+ contract from **`skill.json`**, and **NEVER** from the `SKILL.md` YAML
68
+ frontmatter. If you put `security:` / `dataAccess:` in the
69
+ SKILL.md frontmatter, gate 5 still fails with "security.dataAccess must be
70
+ non-empty" no matter how you format the YAML — it is reading a different file.
71
+
72
+ ### `security` (blocking — gate 5)
73
+
74
+ ```json
75
+ {
76
+ "schemaVersion": 1,
77
+ "slug": "<slug>",
78
+ "security": {
79
+ "dataAccess": ["workspace-assets"],
80
+ "humanApprovalRequiredFor": []
81
+ }
82
+ }
83
+ ```
84
+
85
+ - **`security.dataAccess`** — non-empty array. Scopes: `workspace-assets` |
86
+ `memory` | `external-network` | `secrets` | `filesystem`.
87
+ - **`security.humanApprovalRequiredFor`** — **required non-empty IF** `dataAccess`
88
+ contains a **sensitive** scope (`external-network`, `secrets`, `filesystem`).
89
+ List the actions needing human approval (e.g. `["filesystem-write"]`).
90
+ - **Least privilege:** if the skill only reads env + prints (no arbitrary user
91
+ files), declare `["memory"]` — a non-sensitive scope — and
92
+ `humanApprovalRequiredFor` may stay empty. Only reach for `filesystem` when the
93
+ skill genuinely reads/writes user files, and then you must also declare
94
+ approval.
95
+
96
+ ### test contract (drives `cloud skill test`)
97
+
98
+ The same `skill.json` also carries the VERIFICATION contract exercised by
99
+ `cloud skill test --agent` in lifecycle step ③:
100
+
101
+ - `runtime.kind` = `'inline-script'` (or `'http-endpoint'`), `runtime.requires`
102
+ declaring `bins`/`env` the script needs.
103
+ - `inputs` / `outputs` describing the call contract.
104
+ - **`sampleTasks[]`** — at least 2 concrete tasks. EACH MUST have
105
+ `acceptanceCriteria[]` written as substrings/regex the dispatch OUTPUT must
106
+ contain (e.g. `"\"status\":\\s*200"`, `"results"`). These are the auto-scored
107
+ tests: `cloud skill test` dispatches each sampleTask to a real agent and
108
+ matches its output against the criteria. A sampleTask with no
109
+ acceptanceCriteria scores `inconclusive` (NOT a pass), so always write them.
110
+
111
+ > Derive acceptanceCriteria from the spec: required response fields, status
112
+ > codes, schema keys. Tight enough to catch a broken call, not so tight they
113
+ > depend on volatile data.
114
+
115
+ ## Draft validation gates (self-check before submit)
116
+
117
+ The cloud server runs these at `createDraft` time and rejects with HTTP 400 on a
118
+ blocking failure. Run the same checks locally first (or just `cloud skill validate ./<dir>`):
93
119
 
94
120
  | Gate | Check | Blocking |
95
121
  |----------------|------------------------------------------------------------------|----------|
96
122
  | `manifest` | files[] complete; merkle root reproducible | yes |
97
- | `frontmatter` | `name` matches `^[a-z][a-z0-9-]*$`; description ≥ 50 chars | yes |
98
- | `package` | SKILL.md is files[0]; skill.json is files[1] | yes |
123
+ | `frontmatter` | `name` matches `^[a-z][a-z0-9-]*$`; description ≥ 50 quality units (ASCII=1, non-ASCII=2); YAML `|`/`>` supported | yes |
124
+ | `package` | bundle contains SKILL.md + skill.json (located by name) | yes |
99
125
  | `requires` | runtime.requires declares env/bins/python/node explicitly | warn |
100
- | `security` | security.dataAccess non-empty; sensitive scopes require approval | yes |
126
+ | `security` | **skill.json** security.dataAccess non-empty; sensitive scopes (external-network/secrets/filesystem) require security.humanApprovalRequiredFor. NOT read from SKILL.md frontmatter. | yes |
101
127
  | `sample` | at least 1 sampleTask + 1 acceptance criterion | warn |
102
128
  | `runtime` | sandbox executes sample task | deferred |
103
129
 
104
- - `name` matches `^[a-z][a-z0-9-]*$`
105
- - `description` ≥ 50 chars, contains trigger context ("Use when...")
106
- - SKILL.md body ≤ 500 lines (progressive disclosure)
107
- - All scripts/refs/assets paths exist in manifest files[] array
108
- - Merkle root computed correctly:
109
- `sha256(join("\n", sorted(files, by=path).map(f => path + ":" + sha256)))`
110
-
111
- ## Output contract
112
-
113
- After a successful submit, return to the user:
114
-
115
- ```
116
- Draft submitted.
117
- id: <skill id>
118
- slug: <slug>
119
- manifest revision <merkle>
120
- review task: <task id> (capability=skill-review, assignee=workspace owner)
121
- next step: Open in Studio Authoring → review → promote to eval (release201/08)
122
- ```
130
+ ## Reference
123
131
 
124
- Do NOT chain into install / publish; lifecycle is the workspace owner's call.
132
+ - The skill author (use this): `built-in-skills/skill-creator/SKILL.md`
133
+ - Direct-publish tier: `built-in-skills/skill-builder/SKILL.md`
134
+ - Bundle + catalog contract: `public/docs/Standardization/01-skill-standard.md` (SS-01)
@@ -17,7 +17,7 @@
17
17
  "kind": "text-workflow",
18
18
  "executableJson": {
19
19
  "kind": "cli",
20
- "command": "cloud skill draft create --slug {{slug}} --manifest {{manifest_path}}"
20
+ "command": "cloud skill draft create {{bundle_dir}}"
21
21
  },
22
22
  "requires": {
23
23
  "env": ["PRISMER_API_KEY"],
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "inputs": [
29
29
  { "name": "sourceKind", "type": "enum<inline-spec|doc-url|code-source|service-endpoint>", "required": true, "description": "Source kind chosen by the user or inferred from the slash command" },
30
- { "name": "intent", "type": "string", "required": true, "description": "Free-form description of what the produced skill should do; ≥ 50 chars" },
30
+ { "name": "intent", "type": "string", "required": true, "description": "Free-form description of what the produced skill should do; ≥ 50 quality units (ASCII=1, non-ASCII=2)" },
31
31
  { "name": "sourceRefs", "type": "array<string>", "required": false, "description": "URLs / repo paths / endpoint URLs depending on sourceKind" }
32
32
  ],
33
33
  "outputs": [
@@ -47,7 +47,7 @@
47
47
  ],
48
48
  "acceptanceCriteria": [
49
49
  "IMSkill row exists with status=draft and slug matches user-provided value",
50
- "manifest files[0].path === 'SKILL.md' and files[1].path === 'skill.json'",
50
+ "manifest contains a SKILL.md and a skill.json (located by basename, any order — the package gate does NOT require them at positions [0]/[1])",
51
51
  "GET /api/im/skills/search?q=<slug> returns 0 rows (draft filter applies)"
52
52
  ]
53
53
  }
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: skill-builder
3
+ scope: common
4
+ description: Low-level helper for the DIRECT-PUBLISH tier of skill authoring — it is NOT the entry point for creating skills. To make/build/author/package a skill, use `skill-creator` (the single canonical skill author). This page only documents `skill-creator`'s direct-publish tier (`cloud skill create --install`, or the portable `scripts/ingest.mjs` ingest fallback) and the SS-01 bundle/ingest format. Do NOT route here when the user wants to create a skill — route to skill-creator.
5
+ license: MIT
6
+ compatibility:
7
+ - prismer-sdk
8
+ - hermes
9
+ - claude-code
10
+ - codex
11
+ metadata:
12
+ category: authoring
13
+ allowed-tools:
14
+ - Read
15
+ - Write
16
+ - Bash
17
+ - WebFetch
18
+ ---
19
+
20
+ # Skill Builder — the direct-publish tier of `skill-creator`
21
+
22
+ > **Not an authoring entry point.** Creating, editing, or packaging a skill is
23
+ > the job of **`skill-creator`** — the single canonical skill author. This page
24
+ > only exists to document one of skill-creator's two publish trust tiers
25
+ > (**direct publish**) plus the low-level `scripts/ingest.mjs` ingest helper.
26
+ > If the user says "turn this into a skill" / "make a skill" / "package this
27
+ > workflow", **use `skill-creator`**, not this.
28
+
29
+ ## Where this fits
30
+
31
+ `skill-creator` drives the full lifecycle author→validate→test→package→publish.
32
+ At the publish step there are two trust tiers ([[16-skill-role-authoring-as-agent-capability]] §5.3):
33
+
34
+ - **Direct create (default)** — `cloud skill create ./<dir> [--install]` →
35
+ `status=active`, `publishScope=workspace` (**private**, installable — NOT public).
36
+ Marketplace publish is the separate `cloud skill publish`. This page.
37
+ - **Draft-gated (explicit)** — `cloud skill draft create` → `status=draft`,
38
+ Studio Authoring promotes it. Documented under `skill-authoring`.
39
+
40
+ Both tiers are reached from inside `skill-creator`. Neither is a separate
41
+ "author a skill" skill — they're publish-verb choices.
42
+
43
+ ## SS-01 bundle format (reference)
44
+
45
+ The canonical contract is **SS-01** (`public/docs/Standardization/01-skill-standard.md`).
46
+ A skill is a directory named exactly `<slug>/`:
47
+
48
+ ```
49
+ <slug>/
50
+ ├── SKILL.md # required — frontmatter + body (injected into agent prompt)
51
+ ├── scripts/ # optional — runnable code
52
+ ├── references/ # optional — docs loaded as needed
53
+ └── assets/ # optional — templates / images
54
+ ```
55
+
56
+ `SKILL.md` frontmatter (SS-01 §3.2 — aligns with agentskills.io):
57
+
58
+ ```markdown
59
+ ---
60
+ name: <slug> # must equal the dir name
61
+ scope: common # common | persistence | coding
62
+ description: <one line; what it does AND when to trigger>
63
+ license: MIT
64
+ compatibility:
65
+ - prismer-sdk
66
+ - claude-code
67
+ metadata:
68
+ category: <category>
69
+ ---
70
+
71
+ # <Title>
72
+ <body: imperative instructions, progressive disclosure, ≤500 lines>
73
+ ```
74
+
75
+ `scope` buckets the skill for per-role native-skill filtering (release203/13):
76
+ `common` (default, any agent) / `persistence` (memory/state) / `coding`
77
+ (code-agent targets). It lives inside SKILL.md and round-trips automatically.
78
+
79
+ ## Direct-publish ingest
80
+
81
+ The preferred path is the `cloud skill create` CLI (driven from `skill-creator`):
82
+
83
+ ```bash
84
+ cloud skill create ./<slug> --install --json
85
+ # POST /api/im/skills (+ install). Reads api key from prismer config.
86
+ ```
87
+
88
+ When the `cloud` CLI binary is not on PATH (CI / SDK-only environments), use the
89
+ bundled zero-dependency ingest script:
90
+
91
+ ```bash
92
+ PRISMER_API_KEY=sk-prismer-... PRISMER_CLOUD_BASE=http://127.0.0.1:3000 \
93
+ node scripts/ingest.mjs ./<slug> --install
94
+ ```
95
+
96
+ `scripts/ingest.mjs` parses the SKILL.md frontmatter, collects every bundle file
97
+ into an SS-01 `contentManifest`, computes the merkle `contentManifestRevision`
98
+ with the exact server algorithm
99
+ (`sha256(sorted("<path>:<sha256(bytes)>").join("\n"))`), `POST`s to
100
+ `/api/im/skills` with `Authorization: Bearer $PRISMER_API_KEY`, and on
101
+ `--install` follows with `POST /api/im/skills/:slug/install`. Both paths only
102
+ need an **API key** (`authMiddleware` accepts `sk-prismer-*` as a Bearer token).
103
+
104
+ If `cloud` is present but `skill create` is missing, that is CLI version skew,
105
+ not permission to bypass the lifecycle. Report `cloud --version` and use the
106
+ current repository build. The script fallback is not a workaround for a
107
+ partially stale CLI because its auth/scope/readback behavior is precisely what
108
+ the authoring flow needs to verify.
109
+
110
+ The bundle reader accepts YAML literal/folded block scalars in frontmatter, so
111
+ upstream `description: |` / `description: >` content must not be rewritten to a
112
+ single line merely for ingest. The 50-unit description quality floor counts
113
+ non-ASCII code points as two units, avoiding meaningless padding of concise CJK
114
+ descriptions while retaining the English quality bar.
115
+
116
+ > **The catalog slug is server-assigned**, not your frontmatter `name`. Community
117
+ > creates are prefixed (`weather-lookup` → `community-weather-lookup`). Use the
118
+ > slug returned in the 201 response for install, `cloud skill show`, and a role's
119
+ > `requiredSkills`. A `409` means the slug already exists — pick a new name;
120
+ > there is no in-place overwrite.
121
+
122
+ ## After publishing: managing a live skill
123
+
124
+ Publishing is not a one-way door. Every verb below is a `cloud skill` subcommand
125
+ (the `prismer skill` daemon CLI has the identical set).
126
+
127
+ **The one fact everything else follows from: an installed skill is a LIVE
128
+ REFERENCE, not a snapshot.** `im_agent_skills` stores only `skillId` +
129
+ `installedRevision`; every daemon sync re-reads the catalog row's current
130
+ `contentManifest`. So **editing a published skill's content propagates to every
131
+ agent that has it installed** — no re-install, no opt-in. That is why the server
132
+ rejects a content edit with `422 changelog_required` unless you pass
133
+ `--changelog "<what changed>"`: consumers are entitled to know what changed under
134
+ them. Metadata-only edits (description / icon / tags) need no changelog.
135
+
136
+ | Verb | What it does | Effect on people already using it |
137
+ | ------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
138
+ | `cloud skill delist <slug> [--reason ...]` | Removes it from Marketplace search. Content, installs, syncs all keep working. | **None.** They keep the skill and keep receiving content updates. |
139
+ | `cloud skill relist <slug>` | Puts it back (re-runs the publish gate, so an admin takedown still blocks it). | None. |
140
+ | `cloud skill deprecate <slug> --reason <r> [--successor <slug>]` | Marks it superseded. It stays installable — new installs get a **warning, not a block**. | None; they see the reason + successor. |
141
+ | `cloud skill undeprecate <slug>` | Clears the mark. | None. |
142
+ | `cloud skill archive <slug> [--confirm]` | **Retires it. UNBINDS every agent that has it installed.** | **Destructive.** With live consumers the server refuses until `--confirm`. |
143
+ | `cloud skill transfer <slug> --to <imUserId>` | Offers ownership. Two-phase — nothing moves until the recipient runs `transfer-accept`. | None. (`transfer-abort` withdraws the offer.) |
144
+ | `cloud skill published` | Your publication inventory: slug, listing state, **consumer count**. | — |
145
+
146
+ **delist vs archive is the distinction that matters.** Delist is a visibility
147
+ flip: it hides the skill from the Marketplace and nothing else. Archive retires
148
+ it and unbinds every installed agent — that is why it has a consumer door:
149
+
150
+ ```bash
151
+ $ cloud skill archive weather-lookup
152
+ Error: 3 agents are still using this skill — archiving unbinds them.
153
+ Re-run with --confirm to archive anyway: cloud skill archive weather-lookup --confirm
154
+ ```
155
+
156
+ Reach for delist when you no longer want new users; reach for archive only when
157
+ you intend to cut existing ones off. Deprecate is the polite middle: it keeps
158
+ working and points people at the successor. There is **no hard delete** — a
159
+ published skill is never destroyed, only moved between these states.
160
+
161
+ Admin takedown is a separate, admin-only action. A taken-down skill cannot be
162
+ re-listed by its owner (`cloud skill relist` returns "was taken down by an
163
+ administrator"); an admin must reinstate it first.
164
+
165
+ ## Reference
166
+
167
+ - The skill author (use this): `built-in-skills/skill-creator/SKILL.md`
168
+ - Bundle + catalog contract: `public/docs/Standardization/01-skill-standard.md` (SS-01)
169
+ - Draft-gated tier: `built-in-skills/skill-authoring/SKILL.md`
170
+ - Role side: `built-in-skills/role-builder/SKILL.md` (SS-02)
171
+ - Post-publish endpoint contract: `docs/api/publish-lifecycle.md` (product204/21)