@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.
- package/CHANGELOG.md +3430 -0
- package/README.md +34 -12
- package/apc/skills/FIELD-DICTIONARY.md +111 -0
- package/apc/skills/bug-reproduce/SKILL.md +150 -0
- package/apc/skills/bug-reproduce/skill.json +96 -0
- package/apc/skills/code-review/SKILL.md +198 -0
- package/apc/skills/code-review/skill.json +124 -0
- package/apc/skills/design-review/SKILL.md +122 -0
- package/apc/skills/design-review/skill.json +88 -0
- package/apc/skills/doc-sync/SKILL.md +168 -0
- package/apc/skills/doc-sync/skill.json +81 -0
- package/apc/skills/env-doctor/SKILL.md +194 -0
- package/apc/skills/env-doctor/skill.json +209 -0
- package/apc/skills/git-ops/SKILL.md +189 -0
- package/apc/skills/git-ops/skill.json +94 -0
- package/apc/skills/impact-trace/SKILL.md +168 -0
- package/apc/skills/impact-trace/skill.json +104 -0
- package/apc/skills/observability/SKILL.md +195 -0
- package/apc/skills/observability/skill.json +116 -0
- package/apc/skills/release-db-config-sync/SKILL.md +186 -0
- package/apc/skills/release-db-config-sync/skill.json +109 -0
- package/apc/skills/release-ota-promote/SKILL.md +195 -0
- package/apc/skills/release-ota-promote/skill.json +176 -0
- package/apc/skills/release-preflight/SKILL.md +174 -0
- package/apc/skills/release-preflight/skill.json +175 -0
- package/apc/skills/release-rollback/SKILL.md +214 -0
- package/apc/skills/release-rollback/skill.json +230 -0
- package/apc/skills/release-tag/SKILL.md +194 -0
- package/apc/skills/release-tag/skill.json +94 -0
- package/apc/skills/releasing-prod/SKILL.md +49 -0
- package/apc/skills/releasing-test/SKILL.md +135 -0
- package/apc/skills/sdk-release/SKILL.md +200 -0
- package/apc/skills/spec-intake/SKILL.md +169 -0
- package/apc/skills/spec-intake/skill.json +93 -0
- package/apc/skills/test-result-feedback/SKILL.md +239 -0
- package/apc/skills/test-result-feedback/skill.json +193 -0
- package/apc/skills/test-runner/SKILL.md +169 -0
- package/apc/skills/test-runner/skill.json +103 -0
- package/apc/skills/ui-align/SKILL.md +209 -0
- package/apc/skills/ui-align/skill.json +114 -0
- package/apc/skills/ui-canvas/SKILL.md +148 -0
- package/apc/skills/ui-canvas/skill.json +127 -0
- package/built-in-skills/agent-coordination/SKILL.md +59 -37
- package/built-in-skills/agent-meta/SKILL.md +1 -0
- package/built-in-skills/assets/SKILL.md +8 -6
- package/built-in-skills/browser-use/SKILL.md +93 -0
- package/built-in-skills/canvas-design/SKILL.md +1 -0
- package/built-in-skills/claim-agent-ownership/SKILL.md +3 -2
- package/built-in-skills/claude-api/SKILL.md +1 -0
- package/built-in-skills/codebase-design/DEEPENING.md +37 -0
- package/built-in-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/built-in-skills/codebase-design/LICENSE +21 -0
- package/built-in-skills/codebase-design/SKILL.md +116 -0
- package/built-in-skills/conversation-compaction/SKILL.md +114 -0
- package/built-in-skills/council-creator/SKILL.md +426 -0
- package/built-in-skills/diagnosing-bugs/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/SKILL.md +136 -0
- package/built-in-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/built-in-skills/doc-coauthoring/SKILL.md +1 -0
- package/built-in-skills/document-generation/SKILL.md +105 -0
- package/built-in-skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/built-in-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/built-in-skills/domain-modeling/LICENSE +21 -0
- package/built-in-skills/domain-modeling/SKILL.md +76 -0
- package/built-in-skills/frontend-design/SKILL.md +1 -0
- package/built-in-skills/human-approval/SKILL.md +17 -2
- package/built-in-skills/image-generate/SKILL.md +103 -302
- package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +289 -0
- package/built-in-skills/ingest/SKILL.md +13 -45
- package/built-in-skills/internal-comms/SKILL.md +1 -0
- package/built-in-skills/liteparse/SKILL.md +130 -110
- package/built-in-skills/mcp-builder/SKILL.md +1 -0
- package/built-in-skills/memory/SKILL.md +420 -55
- package/built-in-skills/memory-dream/SKILL.md +339 -0
- package/built-in-skills/office-artifacts/SKILL.md +17 -4
- package/built-in-skills/okr/SKILL.md +154 -0
- package/built-in-skills/persona/SKILL.md +81 -0
- package/built-in-skills/persona-generator/SKILL.md +296 -0
- package/built-in-skills/pkf-svg/SKILL.md +253 -0
- package/built-in-skills/pkf-writing/SKILL.md +236 -0
- package/built-in-skills/prismer-im-collab/SKILL.md +26 -6
- package/built-in-skills/proactivity/SKILL.md +84 -0
- package/built-in-skills/remotion/SKILL.md +431 -0
- package/built-in-skills/role-builder/SKILL.md +203 -0
- package/built-in-skills/role-builder/scripts/author-role.mjs +334 -0
- package/built-in-skills/role-builder/scripts/ingest-role.mjs +223 -0
- package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +290 -0
- package/built-in-skills/role-builder/scripts/operation-harness.mjs +267 -0
- package/built-in-skills/skill-authoring/SKILL.md +110 -100
- package/built-in-skills/skill-authoring/skill.json +3 -3
- package/built-in-skills/skill-builder/SKILL.md +171 -0
- package/built-in-skills/skill-builder/scripts/ingest.mjs +265 -0
- package/built-in-skills/skill-creator/SKILL.md +165 -423
- package/built-in-skills/skill-creator/references/external-library-import.md +110 -0
- package/built-in-skills/skill-creator/scripts/import-library.mjs +475 -0
- package/built-in-skills/slack-gif-creator/SKILL.md +20 -0
- package/built-in-skills/tasks/SKILL.md +38 -23
- package/built-in-skills/tdd/LICENSE +21 -0
- package/built-in-skills/tdd/SKILL.md +110 -0
- package/built-in-skills/tdd/mocking.md +59 -0
- package/built-in-skills/tdd/refactoring.md +10 -0
- package/built-in-skills/tdd/tests.md +61 -0
- package/built-in-skills/team/SKILL.md +2 -1
- package/built-in-skills/web-artifacts-builder/SKILL.md +1 -0
- package/built-in-skills/webapp-testing/SKILL.md +1 -0
- package/built-in-skills/wechat-pay/SKILL.md +59 -0
- package/dist/cli.cjs +71872 -19960
- package/dist/cli.js +71803 -19846
- package/dist/index.cjs +72010 -19966
- package/dist/index.d.cts +4258 -712
- package/dist/index.d.ts +4258 -712
- package/dist/index.js +72156 -20118
- package/package.json +37 -6
- package/plugins/memory/prismer/__init__.py +1211 -0
- package/plugins/memory/prismer/plugin.yaml +8 -0
- package/plugins/memory/prismer/tool-schemas.generated.json +249 -0
- package/plugins/tools/prismer-recall/__init__.py +282 -0
- package/plugins/tools/prismer-recall/plugin.yaml +15 -0
- package/built-in-skills/memory-curation/SKILL.md +0 -135
|
@@ -1,124 +1,134 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-authoring
|
|
3
|
-
|
|
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
|
|
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
|
-
>
|
|
76
|
-
>
|
|
77
|
-
>
|
|
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
|
-
|
|
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
|
-
|
|
82
|
-
|
|
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
|
-
##
|
|
38
|
+
## Draft submission (the review-gated path)
|
|
90
39
|
|
|
91
|
-
|
|
92
|
-
|
|
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
|
|
98
|
-
| `package` | SKILL.md
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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)
|