Files
obelisk/skill-doc/references/recap/writing1-cover.md
T
tommy0103 90191e4604 feat(cli): extract Obelisk runtime into npm package
Add @obelisk-apps/cli with the existing build, search, query, and attune contract plus official skill installation.

Separate the docs-only skill artifact, bootstrap installer, release layout, cross-platform CI, and package-level regression coverage.
2026-07-16 17:26:23 +08:00

2.5 KiB

Card 1 Cover Writing

The cover should be readable in one glance: badge, persona, one plain claim, activity, footer. Before writing, say the claim to the user in a chat bubble. If it sounds like a topic list or report heading, shrink it.

Mock taste anchor

{
  "type": "cover",
  "badge": "Week 24",
  "title": "The Architect",
  "claim": "从零设计了一个完整的 memory 系统。",
  "activity": [0.85, 0.92, 0.72, 0.45, 0.88, 0.30, 0],
  "footer": "12 sessions · 2.4M tokens"
}

This works because 从零设计了一个完整的 memory 系统。 is one plain claim, in the user's language, and can be read in one breath. The Architect is English chrome; it gives the card a designed surface without translating the user's actual work.

JSON Shape

type CoverCard = {
  type: "cover";
  badge: string;
  title: string;
  claim: string;
  activity: number[];
  footer: string;
  evidence_refs?: string[];
};

Field duties:

  • badge: compact period chrome, such as Week 24.
  • title: persona label, usually The Architect, The Debugger, etc.
  • claim: one plain claim; not a topic list, project inventory, colon-led tagline, or clever English that hides the user's language.
  • activity: period intensity values from retrieval.
  • footer: public metric line with no internal filter notes.

After writing, check that persona.claim and cover.claim tell the same story, and attach evidence_refs to the claim or metric if it is surprisingly specific.

First JSON Write

After Card 1, create or update the recap JSON file. Do this before reading pattern2-thinking.md.

Use this top-level shape:

type Recap = {
  schema_version: "obelisk.recap.v1";
  kind: "weekly" | "monthly";
  generated_at: string;
  period: { label: string; start: string; end: string; timezone: string };
  source: { project?: string; session_ids: string[]; memory_ids?: string[] };
  metrics: {
    sessions?: number;
    messages?: number;
    tokens?: number;
    active_days?: number[];
    streak_days?: number;
    workflows?: number;
    workflow_agents?: number;
    corrections?: number;
  };
  persona: { archetype: string; title: string; claim: string; tone: string };
  cards: [CoverCard, { type: "thinking_path" }, { type: "vibe" }, { type: "workflow" }, { type: "closing" }];
  evidence?: Array<{ id: string; session_id?: string; message_uuid?: string; memory_id?: string; summary?: string }>;
};

For app handoff, write JSON under ~/.obelisk/recap/. Weekly filenames are recap-{YYYY}-W{WW}.json; monthly filenames are recap-{YYYY}-{MM}.json.