Spec packs for coding agents
Hand your agent a spec pack. Get software that works, in your language.
Each pack spells out every decision a product needs, with tests for each one. Your agent builds from it without stopping to ask you questions, runs the tests until everything passes, and you end up with code you own and can change however you like.
Browse packs
Ready-made specs for real products. The green dots show how much of each pack other people have already built successfully.
1 pack
Lightkone core
A paper library you own: search, BibTeX import and export, citation keys, PDF filing, merging and duplicate finding.
No packs match these filters.
Search inside every pack: obligations, briefs and assumptions
How it works
From a pack to running code in three steps.
Pick a pack
A pack holds the product's brief, every decision it needs, and the tests that check each one. Nothing is left for your agent to guess.
Your agent builds it
Give pack.md to Claude Code or any coding agent and pick a language. Questions it would normally stop and ask you are already answered.
The tests say when it's done
The pack's tests run as your agent works, so it knows what is still wrong and fixes it. When everything passes, the build is done and the code is yours.
Using a pack
You send three messages. Your coding agent does the rest, checked by the pack at every step.
One decision, end to end
A real rule from the kausalflow/lightkone pack, and how its test stops an agent from guessing wrong. The search data is simplified.
Obligation · decided
Trashed papers appear only with is:trash, and then only trashed papers appear; an empty trashed field is not trashed.
Two reasonable builders could easily disagree here. Should a deleted paper still turn up in search? The pack settles it once, so nobody has to guess.
Example check
| Search | Must return |
|---|---|
| causal | p2 |
| is:trash | p3 |
p3 matches "causal" too, but it is in the trash, so it must stay hidden.
Running the check
| Search | Expected | Build A, Go | Build B, Python |
|---|---|---|---|
| causal | p2 | p2 ✓ | p2, p3 ✗ |
| is:trash | p3 | p3 ✓ | p3 ✓ |
Both builds look fine in a quick demo. Build B guessed that trashed papers still match a search. The check catches it, so Build B gets no passing result for this part until it is fixed.
The finished result
This is Lightkone's own result for this part, shared on the pack page so other builders know it builds cleanly.
For publishers
Know how a product should work? Package it once, and every coding agent can build it.
Write it once, built everywhere
People you will never meet build your pack in Python, Go, TypeScript and more. Every build follows your decisions, because your tests check each one.
Your agent writes most of it
symbolon extract drafts a pack from software you already have. You read through the decisions, settle the open ones, and publish.
Credit and support
Each pack page shows who published it, with your profile and support links such as GitHub Sponsors or Buy Me a Coffee. Paid packs are coming later.
See it working in the wild
Builds that pass your tests are listed on your pack page, so you can see who is using your spec and in which languages.
- 1Start a pack
symbolon pack initorsymbolon extract - 2Settle the decisionsMark each one decided, a default, or open for builders
- 3Publish
symbolon publish, or upload it on the site
Built for agents to read
Every page has a plain-text twin.