lore
SpecStory Lore - mine your SpecStory coding histories (any agent - Claude Code, Codex, Cursor, Gemini, and more) into a persistent corpus, surface your reproducible workflows with corroborated evidence, and interactively forge the chosen ones into skills installed across all your agent harnesses
Install / Use
npx skills add specstoryai/getspecstory --skill loreInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Tags
Our assessment of lore
lore scores 93/100 on our quality scale, 644th of 2,945 Automation skills we index (top 22%).
Its SKILL.md is 33 KB long, well organised into 38 sections with 15 code examples: a thorough specification that gives an agent plenty to work with.
With 1,342 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 4 days ago, so lore is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit β read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-10-03. It catches known dangerous patterns, not every risk β read a skill before letting an agent act on it.
lore compared with similar skills
All 4 of these similar skills score higher than lore; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| lore (this skill)by specstoryai | 93 | 1.3k | 4d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 88.6k | 17d ago | CLAUDE.md |
| rufloby ruvnet | 100 | 73.7k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.3k | 2d ago | MCP Server |
| algorithmic-artby anthropics | 100 | 177.9k | 10d ago | SKILL.md |
Frequently asked questions
- How do I install lore?
- Run
npx skills add specstoryai/getspecstory --skill lore. The install tabs above show the steps for each supported agent. - Which AI agents does lore work with?
- It is written for Claude Code, Gemini CLI, Cursor and OpenAI Codex, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is lore safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is lore still maintained?
- The repository was last updated 4 days ago, so lore is actively maintained.
Skill content
View source on GitHubname: lore description: SpecStory Lore - mine your SpecStory coding histories (any agent - Claude Code, Codex, Cursor, Gemini, and more) into a persistent corpus, surface your reproducible workflows with corroborated evidence, and interactively forge the chosen ones into skills installed across all your agent harnesses. Use when the user wants to turn past AI coding sessions into reusable skills, asks "what could I make into a skill", "mine my lore", "forge skills from my history", or points at a .specstory/history directory. argument-hint: "Enter = guided setup Β· or plain English, e.g. 'last 30 days, just show candidates'" allowed-tools: Bash, Read, Write, AskUserQuestion license: Apache-2.0 hooks: PreToolUse: - matcher: "ExitPlanMode" hooks: - type: command command: "node "${CLAUDE_SKILL_DIR}/scripts/hooks/validate-plan.mjs"" metadata: author: Greg Ceccarelli version: "3.9.0"
Lore
Your sessions are your lore. This skill turns a user's real coding history into installed skills.
A deterministic engine (scripts/mine-skills.mjs) parses their SpecStory transcripts - from every
agent SpecStory captures (Claude Code, Codex CLI, Cursor CLI, Gemini CLI, Factory Droid, DeepSeek,
Antigravity, ...) - into a persistent corpus of beats, and returns corroborated candidates.
You - the calling agent, whichever harness you are - supply all judgment: name them, discard the
generic ones, and interactively forge the good ones into SKILL.md packages grounded in the user's
own commands.
The engine does the retrieval and counting; you do the synthesis. Do not try to read raw transcripts yourself - they can be hundreds of thousands of lines. Run the engine and work from its output.
This skill is harness-portable (agentskills.io format). Where it names a specific tool
(e.g. AskUserQuestion), treat that as "use your harness's equivalent; fall back to plain chat."
Voice: when narrating to the user, talk about mining their lore and skill candidates - e.g. "I'll mine your lore here in <project> for skill candidates." Reserve the word forge for the final act only: creating the skills the user selected (Step 4). Never describe mining, judging, or candidates as "forge-β¦" anything.
OUTPUT CONTRACT - three LAWS, read before emitting anything to the user
Named failure mode #1 (2026-06-09, BearClaude run): the agent indexed, deep-mined four skills, then jumped straight to AskUserQuestion with bare option labels - ZERO dossiers rendered in chat. The user declined every question because they had nothing to judge by. The entire mining run was wasted.
Named failure mode #2 (2026-06-09, BearClaude run, SAME DAY, fresh session, LAWs in effect): the agent narrated phases correctly, did verification reads, then asked again with NO dossier message - its last message before the question was process narration ("CodeMirrorBundle is alive in today's repoβ¦") - and the question text falsely claimed "dossiers above". Lesson: a felt self-check is not a check. Compliance must be MECHANICAL: the sentinel line below is the check, not your impression.
Named failure mode #3 (2026-06-10, teammate's machine, Opus 4.8, plan-mode path): the agent DID
use plan-mode curation but presented a THIN plan - skill names and skip reasons with the dossiers
summarized away - so the user approved a forge they never saw the evidence for. The plan UI makes
skipping the display step impossible, not skipping the content. Lesson: the plan body must BE
the engine's plan render artifact (Step 3), which embeds every card verbatim and ends with the
LAW 1 sentinel. In Claude Code this is now HOOK-ENFORCED: a PreToolUse hook in this skill's
frontmatter denies any ExitPlanMode whose plan is not that artifact.
LAW 1 - DOSSIERS BEFORE CANDIDATE QUESTIONS, PROVEN BY SENTINEL. This law governs candidate
decisions - any prompt where the user chooses which skills to forge, skip, or update. (Navigation
questions like the Step 0.25 guided start, or scope confirmations, are exempt - they decide nothing
about candidates.) Before any candidate prompt you must emit one chat message that contains a full
dossier block (### <name> β¦, per Step 3) for EVERY candidate, and that message must END with this
exact line:
=== dossiers above: N ===
where N equals the number of candidates you are about to offer. At the moment of asking, the check is
mechanical: "Does a prior message of mine end with === dossiers above: N === and does N match my
option count?" No sentinel β you have not rendered dossiers, whatever you remember - STOP and write
them. Process narration between tool calls does NOT count; interim notes do NOT count.
The strongest form of LAW 1 is plan-style curation (Claude Code, see Step 3): present the dossiers
AS the plan via ExitPlanMode - then showing the evidence and asking for the decision are the same
act, and skipping the display is structurally impossible. But the plan only enforces that
something is shown, not what (failure mode #3): the plan body must embed the engine-rendered
dossier cards verbatim and end with the sentinel, same mechanical check as chat. The sentinel path
alone is the fallback for harnesses without plan mode.
LAW 2 - RENDER THE ENGINE'S VISUALS VERBATIM, IN A REAL MESSAGE. After the report, you must emit
a user-facing mining summary MESSAGE (tool output alone does not count - the user should not need to
expand collapsed tool results). It opens with the engine's π lore Β· β¦ badge line and ends with the
<!-- PASS-THROUGH FOOTER --> block, both verbatim. The same rule covers every PASS-THROUGH
block the engine emits (STATUS, THEMES, DOSSIERS). Going tool β tool β question with no synthesis
message in between is failure mode #2.
LAW 3 - NARRATE PHASES. Before every long-running engine or deep-mine call, emit one short
status line so the window always shows what is happening: π indexing BearClaude (253 sessions)β¦,
π deep-mining 4 clusters (this runs subagents; a few minutes)β¦, π checking the forged-skill registryβ¦. Never leave the user staring at a silent tool call.
What makes a candidate skill-worthy
A reproducible skill is a behavior that recurs, is regular, and has a clear trigger. The engine scores for recurrence/span/recency/specificity/outcomes; you apply the judgment it cannot:
- Keep it when the procedure is distinctive and specific to how this user/project works
(e.g.
supabase link β supabase db β supabase migration,gh run watchCI-watching, "write a comprehensive commit", "fix git divergence against origin/main", a read-only diagnosis). - Discard it when it is generic to all coding and carries no project-specific procedure
(e.g. bare
git status β git diff, a lone "yes"/"do 1,2,3" confirmation). High session counts alone do not make a skill - ubiquity is not a trigger.
In cross-project mode the engine splits candidates into PORTABLE (recurs across β₯2 projects) and PROJECT-SPECIFIC (one project). Portability is the strongest signal of a real transferable skill: forge PORTABLE ones to the personal canonical dir and PROJECT-SPECIFIC ones into that repo.
Authorship (shared repos): committed histories carry their session owner - the engine attributes
every session (git add-author > home-dir sniff > machine user) and candidates show π₯ N authors
when several people exhibit the behavior. Use it:
- Multi-author candidate = a TEAM practice, the strongest forge signal of all - propose it at
project scope (committed
.claude/skills) so the whole team benefits. - Single-author, and it's the current user = personal candidate, personal scope.
- Single-author, a TEAMMATE's = say so plainly in the dossier ("mined from Jake's sessions") and recommend team scope or checking with them before forging it as the user's own practice. Never present a teammate's workflow as the user's.
- Privacy: teammate names may appear in team-scoped (committed) skills; scrub them from personal-scope skills.
Note on the evidence: every command candidate comes from an actually-executed shell <tool-use> block
(detected by the provider-set data-tool-type="shell" attribute, so it works for Bash, Shell,
run_shell_command, exec_command, and every other provider's runner). It is real agent activity, not a
pasted example. Single-line commands (inline backtick or in the tool <summary>) and multi-line
## Process
### Step 0 - Locate the history directory(ies)
Default to `.specstory/history` in the current project - but **check for nested histories first**
(monorepos keep them in sub-packages too):
```zsh
find . -type d -path '*/.specstory/history' -not -path '*/node_modules/*' 2>/dev/null | head
If more than one shows up, use --scan . (any-depth discovery, includes the root's own history).
For cross-project trends across sibling repos, pass several --dir flags, one
--projects <parent>, or --scan <parent>. If no history exists anywhere, tell them SpecStory
records sessions and stop.
Step 0.25 - Guided start (when invoked with NO arguments)
A bare /lore means the user wants to be walked through it. Ask ONE structured question round
(AskUserQuestion with three questions; plain numbered lists on harnesses without it), then proceed -
do not make them learn the argument grammar:
- Scope (header "Scope"): "This project (Recommended)" β cwd history, auto-
--scan .if nested histories exist Β· "All my repos under a folder" β ask which parent, then--scan <parent>Β· "Just the existing corpus" β skip indexing, report on~/.specstory/lore.dbdirectly. - Window (header "Window"): "All time (Recommended)" Β· "Last 30 days" β
--days 30Β· "Last 90 days" β--days 90. - Goal (header "Goal"): "Find & forge skills (Recommended)" β full pipeline Β·
"Just show me candidates" β stop after dossiers, no forging Β· "Status / what has Lore done" β
run
statusand render it verbatim (LAW 2), nothing else Β· "Reset my lore" β confirm, thenreset.
This is a navigation question, not a candidate decision - LAW 1 does not apply to it. After the answers, echo the resolved interpretation in one line (per Step 0.5) and run. If the user typed ANY arguments, skip this step entirely and interpret them via Step 0.5.
Step 0.5 - Interpret the user's input
Map what the user typed to engine flags / process modes. If they gave nothing, Step 0.25 already collected the choices.
| User says | Do |
|---|---|
| a path, "this project", nothing | --dir <path> (default .specstory/history); if nested histories exist, --scan . |
| "across my projects in ~/code", "compare A and B" | --projects <parent> or repeated --dir (cross-project mode) |
| "find all histories in here", monorepo with sub-package histories | --scan <root> (any depth, root's own history included) |
| "last 30 days", "since April" | --days N |
| "only the frequent ones", "did it 10+ times" | raise --min-sessions N |
| "just runbooks", "only command procedures" | --kind cmd (or runbook for cmd+task+corr) |
| "only how I work", "just meta-skills" | --kind meta |
| "about supabase", "migration skills", "focus on X" | --filter <substring> |
| "just show me candidates", "don't forge", "dry run" | run engine + synthesize (Steps 1β2b), then STOP - skip curate/forge |
| "status", "what have you done", "what's in my lore" | status - render the pass-through view verbatim |
| "what skills do I have", "show my skills", "list my forged skills" | skills - the installed-skills inventory (lore-forged with registry health + every other skill found in the harness dirs, with what each does); render verbatim (LAW 2) |
| "show me the last plan", "recall the candidates", "pick up where we left off" | plan last - re-renders the most recent saved plan against the current corpus; continue at Step 3 curat
Truncated for display β read the full file on GitHub.
Related Skills
Agent-Reach
88.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu β one CLI, zero API fees.
ruflo
73.7kπ The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
Scrapling
85.3kπ·οΈ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit β see the Safety scan above for what the skill file itself contains.
