Initial commit — Singular Particular Space v1
Homepage (site/index.html): integration-v14 promoted, Writings section integrated with 33 pieces clustered by type (stories/essays/miscellany), Writings welcome lightbox, content frame at 98% opacity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
170
skills/commissioning-skill/spore-entry-format.md
Normal file
170
skills/commissioning-skill/spore-entry-format.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# Spore entry format
|
||||
|
||||
Each entry in a `*-spores.md` file is a self-contained, atomic policy record.
|
||||
One trigger condition. One outcome. No prose reasoning.
|
||||
|
||||
---
|
||||
|
||||
## Schema
|
||||
|
||||
```yaml
|
||||
---
|
||||
spore: {kebab-case-identifier}
|
||||
task-class: {task-class-name}
|
||||
scion-model: {model-identifier}
|
||||
deposited: {YYYY-MM-DD}
|
||||
hook: {relative-path-to-hook} | nil
|
||||
---
|
||||
policy: {single declarative sentence describing the decision}
|
||||
trigger: {event} · {condition}
|
||||
on-match: allow | deny | escalate
|
||||
on-novel: escalate to parent
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Field definitions
|
||||
|
||||
`spore` — unique identifier within the file. Kebab-case. Descriptive enough to
|
||||
identify the decision at a glance without reading the body.
|
||||
|
||||
`task-class` — the task class this entry was written for. Should match the
|
||||
filename stem (e.g. `annotator` in `annotator-spores.md`).
|
||||
|
||||
`scion-model` — the model this entry was token-budgeted for. Entries written for
|
||||
Haiku-4.5 are valid for Sonnet-class scions (more capable model, easier load)
|
||||
but not necessarily vice versa.
|
||||
|
||||
`deposited` — ISO date the entry was first written.
|
||||
|
||||
`hook` — relative path to the compiled cchooks Python file, if one exists for
|
||||
this decision. `nil` if the decision requires scion interpretation and has no
|
||||
compiled hook.
|
||||
|
||||
`policy` — one declarative sentence. What the scion should do. Not why. Not when.
|
||||
Just what. The trigger handles when.
|
||||
|
||||
`trigger` — the event and condition that activates this policy. Use the format:
|
||||
`{HookEvent} · {condition}`. Hook events are: `PreToolUse`, `PostToolUse`,
|
||||
`UserPromptSubmit`, `Stop`, `SessionStart`, `SessionEnd`.
|
||||
|
||||
`on-match` — the outcome when trigger fires: `allow`, `deny`, or `escalate`.
|
||||
|
||||
`on-novel` — always `escalate to parent`. This is the fallback for situations
|
||||
not covered by any spore entry.
|
||||
|
||||
---
|
||||
|
||||
## Token discipline
|
||||
|
||||
Each entry must stay under approximately 60 tokens. Count before writing.
|
||||
The policy line is the most likely offender — keep it to one clause.
|
||||
The trigger line should be terse: event type, one condition, nothing more.
|
||||
|
||||
Reasoning about *why* a policy exists belongs in the corresponding SEEDS.md
|
||||
entry body, not here. If you find yourself wanting to add a comment or
|
||||
explanation to a spore entry, that content goes in SEEDS.md instead.
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
### File write guard (with hook)
|
||||
|
||||
```yaml
|
||||
---
|
||||
spore: env-file-write-guard
|
||||
task-class: annotator
|
||||
scion-model: haiku-4.5
|
||||
deposited: 2026-03-20
|
||||
hook: hooks/env-guard.py
|
||||
---
|
||||
policy: deny all writes to sensitive credential files
|
||||
trigger: PreToolUse · tool=Write · file_path matches *.env|secrets.json|id_rsa
|
||||
on-match: deny
|
||||
on-novel: escalate to parent
|
||||
```
|
||||
|
||||
### Output format enforcement (no hook)
|
||||
|
||||
```yaml
|
||||
---
|
||||
spore: annotation-output-format
|
||||
task-class: annotator
|
||||
scion-model: haiku-4.5
|
||||
deposited: 2026-03-20
|
||||
hook: nil
|
||||
---
|
||||
policy: write all annotation output as JSONL to stdout, one record per line
|
||||
trigger: PostToolUse · tool=Write · file_path matches *.annotation
|
||||
on-match: allow
|
||||
on-novel: escalate to parent
|
||||
```
|
||||
|
||||
### Bash safety guard (with hook)
|
||||
|
||||
```yaml
|
||||
---
|
||||
spore: destructive-bash-guard
|
||||
task-class: annotator
|
||||
scion-model: haiku-4.5
|
||||
deposited: 2026-03-20
|
||||
hook: hooks/bash-guard.py
|
||||
---
|
||||
policy: deny bash commands containing destructive patterns
|
||||
trigger: PreToolUse · tool=Bash · command matches rm -rf|sudo|fdisk|format
|
||||
on-match: deny
|
||||
on-novel: escalate to parent
|
||||
```
|
||||
|
||||
### Escalation trigger (no hook)
|
||||
|
||||
```yaml
|
||||
---
|
||||
spore: schema-mismatch-escalate
|
||||
task-class: annotator
|
||||
scion-model: haiku-4.5
|
||||
deposited: 2026-03-20
|
||||
hook: nil
|
||||
---
|
||||
policy: escalate if input schema does not match expected annotation schema
|
||||
trigger: PreToolUse · tool=Read · file_path matches *.input · schema-mismatch detected
|
||||
on-match: escalate
|
||||
on-novel: escalate to parent
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Full spore file example
|
||||
|
||||
```markdown
|
||||
# annotator-spores.md
|
||||
# task-class: annotator
|
||||
# scion-model: haiku-4.5
|
||||
# token-budget: 600
|
||||
# last-updated: 2026-03-20
|
||||
|
||||
---
|
||||
spore: env-file-write-guard
|
||||
task-class: annotator
|
||||
scion-model: haiku-4.5
|
||||
deposited: 2026-03-20
|
||||
hook: hooks/env-guard.py
|
||||
---
|
||||
policy: deny all writes to sensitive credential files
|
||||
trigger: PreToolUse · tool=Write · file_path matches *.env|secrets.json|id_rsa
|
||||
on-match: deny
|
||||
on-novel: escalate to parent
|
||||
|
||||
---
|
||||
spore: annotation-output-format
|
||||
task-class: annotator
|
||||
scion-model: haiku-4.5
|
||||
deposited: 2026-03-20
|
||||
hook: nil
|
||||
---
|
||||
policy: write annotation output as JSONL to stdout, one record per line
|
||||
trigger: PostToolUse · tool=Write · file_path matches *.annotation
|
||||
on-match: allow
|
||||
on-novel: escalate to parent
|
||||
```
|
||||
Reference in New Issue
Block a user