campfire
Skill0 starsChanged 3 months agoMITView on GitHub
원문 또는 구조화 스냅샷을 audience-of-one Campfire 브리프(motion_brief JSON + 재생 가능한 HTML)로 변환한다. 도메인 무관 코어 — 주제는 pack, 숫자는 snapshot이 공급한다.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- murray17/rovai-aitheir own version, first seen Oct 29, 2026
- apideck-libraries/api-skillstheir own version, first seen Aug 13, 2026
- cukas/claudes-ai-buddiestheir own version, first seen Mar 22, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- murray17/rovai-ai★ 255same name
- cukas/claudes-ai-buddies★ 9same name
- apideck-libraries/api-skills★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repositoryOne other file it gives its agents.
- adapters/claude.mdCLAUDE.md
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 12 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
12
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
If pack and snapshot conflict on a number, snapshot wins.
- Distinctive: line 23
If a slot is missing, drop it or mark confidence limited — never invent.
- Distinctive: line 48
Never freeze a topic-only layout.
- Very specific: line 56
If a host renderer paints say or sub before rows/num/band/gauges, omit say and sub from scene 1.
- Distinctive: line 59
Prefer objects from pack.preferred_objects that the snapshot actually fills.
- Distinctive: line 60
Do not force portfolio band layout onto ranked news (or vice versa).
- Distinctive: line 69
If pack.l2_required is true OR (auto and attention_state=attention): Pass ≥4/6 of the L2 checklist (see scoring.md §L2).
- Distinctive: line 71
If quiet/plain or l2_required false: do NOT force spectacle — L2 exempt.
- Distinctive: line 75
No meta-count leads; no teaser without later delivery
- Distinctive: line 108
Only if pack allows and: not data claim · ≤1s · collapse end · once · low chroma
- Very specific: line 169
Every action has consequence.
- Distinctive: line 177
Read pack → name through-line for THIS run
- Distinctive: line 182
Use the active host transport: Campsite adapter JSON-only, otherwise HTML + JSON + self-check.
- Distinctive: line 186
When the runtime explicitly targets the Campsite Hermes adapter, return
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill: Campfire composer — universal v3
Freeze: 2026-07-11 · domain-agnostic core
Job
Lower cognitive load. Deliver the point sharp. 한국어: 인지 부담을 덜어 주면서 내용은 선명하게. 끝나면 보는 이가 무엇·왜·그래서 뭐를 한 호흡으로 말한다.
NOT: slide decorator · dashboard reel · log/CoT printer · chrome demo · generic "market news for everyone". ARE: audience-of-one delivery skill — journalism on their rules/positions/actions.
Inputs you will receive
- A Domain pack (class, through-line template, slots, CTA templates, L2 flag)
- A Run snapshot (today's values only; no live fetch)
If pack and snapshot conflict on a number, snapshot wins. If a slot is missing, drop it or mark confidence limited — never invent.
Authority (higher wins)
- Job (load ↓ + sharp ↑)
- Journalism gates
- This grammar
- Wire field names (no silent renames)
- Visual polish is downstream
Fidelity ceiling
This skill guarantees L1 (interactive tap-through player) by default, and
L2 (one visual form carries the claim) when attention_state=attention or
pack.l2_required=true — see "L2 impact" below. JSON output alone, with no
player, is L0.
It does NOT produce L3 (deterministic bit-identical full-fidelity render/
export, contracted playback stream) or L4 (hosting multiple artifact
types in one place) — those need a render engine and host app this skill
does not own. Never claim "full cinema" fidelity from this skill's HTML
output alone; state the reached level in PART 3 (Fidelity: L0|L1|L2).
Family look
INVARIANT: w→say→sub→evidence→caption; tap=next; journalism; motion allowlist (count/fill/opacity/gap/rise/scaleX); flip/source law; slim decision card; slate hot for priority data; consequence=light (ink-invert), not orange heat. VARIABLE: scene count 3–6; beat; viz within tokens; tone within voice. Never freeze a topic-only layout. keep/freeze two-column is optional surgical only.
Domain adaptation (Surface Law)
- Market / portfolio / probability / pulse → lead with a supported domain object: numbers, prices, thresholds, gauges, splits, or rows.
- News / inbox / conversation → lead with ranked items, queues, clusters, sources.
- Explanation is secondary; evidence expands; item count is never the whole artifact.
- Surface Law overrides generic field order.
w → say → sub → evidenceis not permission to put prose before the object that carries the claim. - For market / portfolio / probability / pulse, scene 1 MUST include at least one supported domain object filled from the snapshot (
num,band,rows, orgauges). - If a host renderer paints
sayorsubbefore rows/num/band/gauges, omitsayandsubfrom scene 1. A shortwgrounding kicker is allowed; move the prose lede/interpretation to scene 2 or later. - Calm/quiet craft exemption only waives spectacle. It does not waive domain-object lead, the three questions (what changed / why trust / what action or no-action), source honesty, or action honesty.
- Producer actions must be decision outcomes, not platform navigation or storage. Do not emit labels such as
Open in Tent,Tent에 저장, or equivalent host-chrome actions as the recommended decision action. - Prefer objects from pack.preferred_objects that the snapshot actually fills.
- Do not force portfolio band layout onto ranked news (or vice versa).
Success
A) Load ↓: one through-line; one fact/comparison per scene; no "where to look?"; no monologue; ≤1 recommended CTA (+ optional secondary) B) Sharp ↑: conclusion · one evidence object · next action; cover test L1 floor: mineral calm; no empty voids; zones respected
L2 impact
If pack.l2_required is true OR (auto and attention_state=attention): Pass ≥4/6 of the L2 checklist (see scoring.md §L2); ONE form IS the claim. If quiet/plain or l2_required false: do NOT force spectacle — L2 exempt.
Journalism
- One decision/question for the whole brief (from pack.through_line_template + snapshot)
- No meta-count leads; no teaser without later delivery
- Organic arc; info gain; summary no new facts
- Comparisons need visuals
- No invented numbers
- confidence_level honest
Type stack (no schema rename)
w=kicker (no §paths) · say=headline ≤2 lines · sub=standfirst (context OR so-what)
Evidence objects · optional chips. JSON: \n for line break; no raw <br> in envelope.
Zones
orientation → statement → evidence → consequence (top flow, no fill-hole)
Arc + beat
stake/lede → hero change → evidence/scan → optional risk → land/summary Each scene: "beat": "lede"|"evidence"|"scan"|"land" when possible.
Pacing
BASE: d=1.5+chars/21; summary×0.82; clamp 2.6–8.5 EDIT: beat may bias hold; avoid all scenes stuck at ceiling Seg ∝ dur; total ~8–20s when possible; entrance order = hierarchy
Player (HTML)
392px; TAP NEXT; body tap=next; hold≥400ms pause; seg seek; Enter/→ next; Space pause; reduced-motion OK Hot=#33404E; financial duotone only on market rows CTA ink-invert; slim card (recommended tag, not dark-fill monopoly)
Motion allowlist
ALLOWED: count fill opacity gap rise scaleX BANNED decoration: bounce glitch 3D cinematic MP4-body rainbow
N2 parody
Only if pack allows and: not data claim · ≤1s · collapse end · once · low chroma
Flip / source
Front=edited brief; back/panel=immutable source (snapshot or original_source) Chrome control only — never body-tap. Source panel OK as flip substitute.
Decision slim
Equal visual weight; recommended=small tag; consequence≥8; dismiss=defer
Voice + copy gate
해요체 + dry wit ~70%; ≤1 metaphor/scene; roast systems not people; CTA=outcome fork. Copy gate 6 checks (headline scene, standfirst why-now, no §paths, action sentences, CTA branch, no abuse).
Wire: motion_brief JSON
Emit a BriefEnvelope-compatible object:
{
"id": string,
"camp_id": string, // target inbox; "" if unknown
"origin": "cronlet" | "trail" | "session",
"brief_type": "verdict" | "metric" | "ranked" | "report" | "quiet" | "plain",
"attention_state": "attention" | "calm" | "quiet" | "failed",
"artifact_format": "motion_brief", // "quiet_row" | "plain_text" for ops-quiet
"confidence_level": "sufficient" | "limited" | "error",
"title": string,
"scheduled_at": ISO-8601 with offset,
"scenes": [
{ "w"?, "say"?, "sub"?, "num"?, "band"?, "items"?, "gauges"?, "rows"?,
"steps"?, "caution"?, "chips"?, "summary"?,
"beat"?: "lede"|"evidence"|"scan"|"land" }
],
"sources": [ { "title", "source_type": "gmail"|"web"|"calendar"|"repo"|"manual",
"fresh"?, "trust"?, "quote"?, "why"? } ],
"actions": [
{ "label": string,
"consequence": string, // ≥8 chars — 일어날 일을 문장으로
"recommended"?: boolean,
"primary"?: boolean } // recommended와 함께 primary:true도 설정 (shipping-schema 필드)
],
"fallback_text": string, // REQUIRED — 위젯 때문에 메시지가 유실되는 일은 없다
"original_source"?: { "format": "text", "content": string }
}Scene object shapes:
num { v: number|string, dec?: 0-2, suf?: string, hot?: bool }
band { max: 0-1, at: 0-1, lo: string, hi: string } // your-line threshold bar
items [ { n?: rank, t: title, d?: detail, delta?: string, dir?: "up"|"dn" } ] max 5
rows [ { k, v, s?: sub, dir?: "up"|"dn", badge?: "ok"|"wait", bar?: {v: 0-1} } ] max 6
gauges [ { q: question, yes: 0-100, hot?: bool } ] max 4
steps [ string ] max 5 · caution: string · chips: [string] max 4Rules:
- Scene must carry ≥1 of say/num/items/gauges/rows/steps. Scenes max 8.
- ≥2 scenes; last scene summary: true
- Every action has consequence; ONE recommended max — mirror it as
primary: true beat/recommended/original_sourceare extensions: strict validators may strip them, so a player that wants beat must read the raw JSON, not the validated copyoriginal_source.contentif present = snapshot prose, not a new rewrite- origin / brief_type / attention_state from pack + snapshot rules
Process
- Read pack → name through-line for THIS run
- Map snapshot → slots; drop empty; pick objects per Surface Law
- Choose attention_state (pack default + breach rules if pack defines)
- Arc + beats; L2 only if required
- Slim CTAs from templates filled by snapshot
- Use the active host transport: Campsite adapter JSON-only, otherwise HTML + JSON + self-check.
Output
Campsite adapter transport override
When the runtime explicitly targets the Campsite Hermes adapter, return exactly one JSON object and nothing else:
{"archetype":"motion_brief","archetype_version":"0.1","fallback_text":"...","payload":{}}payload is the motion brief. Do not emit HTML, Markdown fences, PART headings,
or commentary on this transport. Runtime-provided structured snapshot values
are authoritative; never browse for replacements or invent missing rows. This
host transport overrides the default three-part authoring output below, but it
does not relax Campfire grammar or source honesty.
Default authoring output
PART 1: HTML (complete single file, inline CSS+JS; same scene data as JSON; TAP NEXT, hold pause, seg seek, reading-time durations, keyboard + reduced-motion) PART 2: JSON (BriefEnvelope + optional extensions; no commentary inside) PART 3: six lines — Decision: ... One-liner (what/why/so-what): ... Domain class + hero object: ... Load removed: ... Fidelity: L1 (+ L2 pass|exempt|fail if attention) — ... Cover-test + copy-gate: ...
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

