makerskills
Twenty-one agent skills for running a one-person business — decide, unstuck, maker-council, deep-research, second-brain, company-brain, domain, jab-hook, pm, personal-cfo and the rest — each one a Markdown workflow document rather than a program, installed into Claude Code, Codex, Cursor or any host that reads the Agent Skill format, with every piece of personal state kept in a config directory the repository never touches.

What it is
makerskills is a plugin of twenty-one agent skills for the personal operator’s craft, installed into Claude Code, Codex, Cursor or any host that reads the Agent Skill format. They group by job type: the three meta-skills that author more (skillify, toolify, loopify), decision and strategy (decide, unstuck, maker-council, deep-research, domain), knowledge and content consumption (second-brain, company-brain, read-book, watch-video, ingest), output (jab-hook, slide-deck) and operations (pm, personal-cfo, company-cfo, paste, social-fetch). The idea underneath it is that a SKILL.md is the skill: the Markdown is the workflow logic, there is no build step, iterating means editing prose, and a reader can run the steps by hand. Everything personal lives in a separate config directory reached through one environment variable, so the repository holds no keys and stays safe to fork. Two levels of semantic versioning run at once, one for the plugin release tag and one per skill, and skills call each other by name — watch-video, skillify and second-brain are the three most cited.
Who built itThe repository’s only contributor: all 71 commits come from one account, coreyhaines31, under a single name and a single email address, and the contributor list has nobody else on it. Thirty of those commits carry a co-author trailer naming a Claude model — Fable 5 on twenty of them, Opus 4.7 on ten. The README’s closing line names him as the founder of Conversion Factory and Magister, and he keeps a second public skill pack, marketingskills, with 46 marketing skills; the maker-council skill here was adapted from that pack’s marketing-council.
How it is put together
The parts · 6The organising idea is that the durable artifact is the document, not the program. A skill is a folder with an SKILL.md in it, and that Markdown is the workflow logic: there is no build step, no test harness and no compilation, iterating means editing prose, debugging means reading the file, and a person can run the steps by hand without an assistant — which is why the collection is deliberately documentation-first and describes the automation as a side effect. Two consequences shape everything else. The first is that anything personal has to live where the repository cannot reach it, so the pack is split into a generic public tree and a private config directory that skills locate through one environment variable, a split enforced by a history rewrite, a gitignore and a data-loss fix that moved five skills’ archives out of their own folders. The second is that composition beats completeness: twenty-one small skills that call each other by name rather than one large one, which is why the reference counts in the composition map are load-bearing information rather than statistics, and why the extension family is capped at three by a written rule. Versioning is treated as part of the interface — two independent semver lines, with an explicit definition of what a patch, a minor and a major mean in each.
- skills/
- Twenty-one installable folders, 90 files in the tree. Each holds an
SKILL.mdand, where the skill needs it, areferences/directory:slide-deckis the largest at six files and 52 KB, thencompany-cfowith seven files and 48 KB,maker-councilwith ten files and 39 KB including eight advisor dossiers and a template, andskillifywith six files and 38 KB covering adaptation buckets, a license check, version propagation and change types. - The root documents
README.md(14,960 bytes) carries the install lines, the five-minute path, a routing table from intent to skill, the skill tables and the composition counts;ARCHITECTURE.md(12,326 bytes) carries the two-layer diagram, the families, the composition map, the versioning policy and eight design principles. Around them sitCHANGELOG.md(21,519),EXAMPLES.md(20,637),FAQ.md(8,222),CONTRIBUTING.md(6,817),INSTALL.md(5,617) andBACKLOG.md(4,301).- .claude-plugin/
- The two manifests that make the pack installable as a plugin —
marketplace.json(963 bytes) andplugin.json(493 bytes) — which is what the marketplace and install commands in the README consume, alongside a 475-byte.gitignorethat keeps the private layer out of the repository. - The private layer
${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/, described as a plain directory of Markdown and YAML holding the rotation portfolio, the Typefully workspace ID, local voice rules, board configurations, seven per-skill archive directories and custom council members — copyable to a new machine with no cloud sync, and untouched by a pull of the repository.- The meta family
skillify,toolifyandloopify, one per way of extending a coding agent: authoring a skill in create, adapt and update modes; wiring an integration, API or MCP server into a project; and setting up a loop or a scheduled task. They are kept at three by rule and documented as a naming family rather than three unrelated tools.- Sibling packs and cross-references
- Cross-plugin references resolve by description match when a skill loads, so a skill here can call another pack’s skill and the reverse, with no manifest linking;
ARCHITECTURE.mdlists the public sibling pack, andskillifyreads a list of a user’s own private packs from the config directory so learnings propagate across all of them.
Choices, and what they beat
A generic public repository beside a private config directory over one repository holding each user’s real data
ARCHITECTURE.mdstates that the public layer contains no personal data, no API keys and no real portfolio names, which is what makes it safe to share, star, fork and adopt, and that the private layer is a plain directory of Markdown and YAML an update never touches. The split was enforced twice in the record: thegit filter-repoflip of 2026-06-28 that removed pre-flip history, and the July fix that moved five skills’ archives out after a reinstall was shown to wipe them.The SKILL.md is the skill over code that implements the skill
Written down as the core insight: the Markdown is read at invocation time and executed, so iterating a skill is markdown editing, debugging is reading the file, behavior and documentation are the same thing, and every skill is legible enough to run by hand without the host that automates it.
User state in the config directory over archives kept inside each skill folder
Issue 5 carries the four-step reproduction with skills CLI 1.5.15 showing that installing re-syncs a skill from source and destroys whatever a user stored inside it. The fix moved each affected archive to the config directory, added a best-effort migration for surviving archives, and shipped as a release named for user-state safety.
A labelled house addition rather than an edit to the borrowed set over adding opportunity cost to the 37signals questions
The pull request says the new section is clearly labelled as not-37signals so the original set keeps its fidelity. Q39 therefore sits in its own section of the questions file, and the triage table and cheat-sheet were extended to reach it rather than the borrowed list being quietly edited.
Three extension skills over a fourth skill in the same naming family
ARCHITECTURE.mdstates the rule and names the temptations it refuses — the family stays at three, and Hookify, Configify and Memorify are the specific ideas it declines — which keeps the rhythm that maps one memorable suffix to the three surfaces a host actually exposes.Cross-reference an external skill instead of vendoring it over copying the skill into the tree
The pull request records an external Apache-2.0 presentation-layer skill being cross-referenced with an exact install command in the composing skill instead of vendored, after the license was checked, with the same round of review findings applied to the integration.
Read fromARCHITECTURE.md (11,506 characters, read in full), README.md (14,882 characters, fetched in full after the recon report carried only its first 6,000), the thirty issues and pull requests in the recon report — twelve issues and eighteen pull requests, numbered 1 to 31 with 20 absent — including their comment threads, and the complete ninety-file tree with sizes.
Build log
6 stages- 01
Thirteen weeks of building, then four quiet weeks
The repository was created on 2026-06-03, and its first commit landed the plugin manifest, a marketplace listing and the README.
ARCHITECTURE.mdrecords a flip on 2026-06-28 usinggit filter-repothat removed all pre-flip personal data, and the first release,v0.1.0, is dated 2026-06-29 and titled “first public release”. Six days later three releases landed on one day, 2026-07-06:v1.0.0 — Public launch,v1.0.1 — Fix SKILL.md frontmatter YAMLandv1.1.0 — company-brain trust levels + /cb review. The line is short — sixteen releases and sixteen tags between 2026-06-29 and 2026-08-12 — and six were stamped within thirty-four seconds on 2026-07-01,v0.2.0at 19:40:03 throughv0.5.0at 19:40:08 andv0.5.1withv0.5.2at 19:40:36 and 19:40:37. The newest release isv1.5.0on 2026-08-12, though the August and September pull requests describe shippingv1.5.1and bumping the manifest to1.6.0, neither of which is a release. Commits tell the same story: 71 in total, 36 in June, 25 in July, nine in August, one in September, the last on 2026-09-04, four weeks before this record. Around it sit 839 stars, 69 forks, six watchers, five open items (three issues, two pull requests) and 587 KB under MIT. Nothing is archived and an unmerged skill pull request is still sitting there, so this record calls the project active and lets the four-week gap speak for itself. - 02
Documentation-first, and the two layers that keep it forkable
ARCHITECTURE.mdexplains the shape, and it opens with a two-layer diagram. The public layer holds the skill documents and is explicitly free of personal data, keys and real portfolio names; the private layer —~/.config/makerskills/, gitignored — holds the rotation portfolio, the Typefully workspace ID, voice rules, board configurations, seven per-skill archives and the custom council members. Skills reach it through one variable,MAKERSKILLS_CONFIG. The collection groups by job type into five families — meta, decision and strategy, knowledge and content consumption, output and creative, operations and utilities. The meta family carries the repository’s most explicit rule: “Rule of 3: the family stays at three. Resist Hookify / Configify / Memorify temptations.” Composition is measured, not asserted: a map counts how many sibling contexts cite each skill,watch-videoat 54,skillify51,second-brain48,slide-deck38,company-brain33,domain32, and the setup advice follows: install the central skills first, sincewatch-videoneeds yt-dlp, ffmpeg and MLX-Whisper andsecond-brainneeds a vault path. Versioning is policy rather than habit: two levels of semver, one for the plugin tag, one per skill, with what counts as a patch, minor and major, and a plain statement that onev0.5.0release may hold skills at0.1.0,0.1.1,0.2.0and0.3.1at once. - 03
The LinkedIn message that moved user state out of the install tree
Issue 5 is the clearest picture of how problems reached this author: a user bug report arriving as a LinkedIn direct message from Cotopaxi Lyon, founder of Lyon, that turned out to be three reports. The first was data loss — five skills archived user state inside their own skill folder, and because
npx skills addre-syncs a skill from source, the next install wiped the archive; the issue carries a reproduction, run on 2026-07-10 with the skills CLI 1.5.15, that installsdecide, writes a file into its archive directory, reinstalls, and shows the user’s file gone with only the repo-shipped index left. The second was sixteen gendered pronouns across nine files that referred to the user as he. The third was that the slide-deck template hardcoded the author’s own identity — a footer reading@coreyhaines · corey.coand a default target — so a user could render and ship a deck carrying somebody else’s handle. All three were fixed in one pull request: archives moved to the config directory under a per-skillarchive/folder, each affected skill given a best-effort migration, and five skills bumped to0.2.0. The same class of bug turned up in three more places while the fix was written —jab-hook,toolifyandpmeach stored state inside their own skill folder. The release that carried it is titledv1.2.0 — archives out of the install tree (user-state safety). - 04
Two reports from outside, and one that stayed open
Two of the more useful issues here are about being told something by a stranger. On 2026-07-16 the author filed issue 11: @rabahrahil had pointed out on X that
decidehas no opportunity-cost question. The check is in the issue: the borrowed 37signals questions get close — return on effort, easier or harder, creates work — but none asks what saying yes displaces. A new “House additions” section was labelled in the file as not-37signals so the borrowed set keeps its fidelity, holding Q39, and the triage table routes money decisions to Q36, Q38 and Q39;decidewent to0.3.0, the plugin tov1.4.0, and the frontmatter was re-validated withjs-yaml. The second is issue 2, filed the dayv1.0.1fixed five skills whose descriptions contained unquoted colons — a break GitHub rendered as a YAML error on the skill pages and that Claude Code’s lenient parser hides locally, caught on launch day. The proposed fix is a continuous-integration guard that strict-parses every frontmatter; it stayed open, and on 2026-08-10 a commenter called kasparovabi made it sharper: the specification capsdescriptionat 1,024 characters andnameat 64, and counting rather than eyeballing found six of the nineteen skills then on main over the maximum,company-brainat 1,411 characters andskillifyat 1,267. It is the only comment in the thread set from somebody other than the author. - 05
Issue first, and one skill held back on purpose
Two skills in this period were designed in the open, proposal first.
unstuckcame from issue 9 on 2026-07-15 with a lane table separating it from its neighbours —decidechooses between known options,business-brainstormevaluates an idea,deep-researchgathers outside information, and this one generates options where there appear to be none — and a decision recorded the day before, that it must be agent-proactive rather than user-invoked, so its description triggers when the agent itself is about to report a dead end. The council skill went further. Issue 1 was filed on 2026-07-02; the work arrived as pull request 13 under a title marked “DRAFT on purpose — do not merge until the unstuck launch has gone out”, a hold dated 2026-07-15 and lifted on 2026-08-12, the dayv1.5.0shipped it. Its design answers are written down: a bench of eight — Fried, Musk, Bezos, Jensen Huang, Iger, Graham, Naval and Blakely — chosen so the lenses collide; seating of three to five by question type with a designated dissenter, on the argument that “an agreeing council is a mirror, not a board”; takes grounded in per-member dossier files that went through two Codex verification rounds; an optional live-research pass; a disagreement map; and a chair synthesis that hands off todecide. The pull request states the count it moved: nineteen skills to twenty. - 06
What is still open, and what was taken out
Two pull requests were still open when this snapshot was taken. Number 30 adds a
/radarskill that polls known sources on a schedule and promotes the good items into the second brain; its thread documents two revisions of its own design —v0.2.0borrowing keyless Bluesky and fediverse instance APIs, thenv0.3.0promoting a paid scraping service to the primary path for X and LinkedIn after calling the endpoints live, two credits spent of 22,195. Its trade-offs are stated plainly: one digest per run with only high-scoring items auto-captured, per-source state files of seen IDs, and scoring that reads metadata while capture fetches content. Not everything added stayed.vibecad, the woodworking-first parametric CAD skill that turned plain English into a headless OpenSCAD render, was extracted to its own private repository on 2026-07-26 with its full history viagit filter-repo, and the issue records the call in one line: it does not belong in this catalogue. The move also collided with the release machinery: main carried both the addition and the removal while the development branch did not, so release pull request 14 needed a merge that reconciled the changelog beforev1.5.0could ship. Documentation drifts too: the README counts twenty-one skills and listsingest, whileARCHITECTURE.mdstill says twenty and its family tables have noingestrow.
Adjacent records
All records →No. 070
OpenChatCut
A local-first video editor whose editing surface is a conversation: the built-in agent and external Codex or Claude Code sessions call the same editing tools the interface itself uses, so every change lands on a real multi-track timeline as a clip, transition, caption, effect or audio item that can still be dragged, undone and exported. Projects and media stay on the machine, and preview and final render both come out of Remotion.
No. 081
pgbot
A single static Go binary that connects to PostgreSQL read-only, reads the server’s own statistics views and prints a graded, findings-first health report — and, because every run saves a local baseline, tells you what changed since last time; the same deterministic findings are served to AI agents over MCP, and the optional AI layer may only explain them.
No. 064
delegate-skills
A skills package in which every coding-agent CLI gets its own delegation skill: the orchestrating agent writes a self-contained brief, a separate CLI edits a real working tree, and the human keeps the review and the commit.