Skip to content

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.

Screenshot of makerskills
Editor screenshot, 30 Sep 2026makerskills ↗

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 · 6

The 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.md and, where the skill needs it, a references/ directory: slide-deck is the largest at six files and 52 KB, then company-cfo with seven files and 48 KB, maker-council with ten files and 39 KB including eight advisor dossiers and a template, and skillify with 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 sit CHANGELOG.md (21,519), EXAMPLES.md (20,637), FAQ.md (8,222), CONTRIBUTING.md (6,817), INSTALL.md (5,617) and BACKLOG.md (4,301).
.claude-plugin/
The two manifests that make the pack installable as a plugin — marketplace.json (963 bytes) and plugin.json (493 bytes) — which is what the marketplace and install commands in the README consume, alongside a 475-byte .gitignore that 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, toolify and loopify, 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.md lists the public sibling pack, and skillify reads 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.md states 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: the git filter-repo flip 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.md states 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
  1. 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.md records a flip on 2026-06-28 using git filter-repo that 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 YAML and v1.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.0 at 19:40:03 through v0.5.0 at 19:40:08 and v0.5.1 with v0.5.2 at 19:40:36 and 19:40:37. The newest release is v1.5.0 on 2026-08-12, though the August and September pull requests describe shipping v1.5.1 and bumping the manifest to 1.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.

  2. 02

    Documentation-first, and the two layers that keep it forkable

    ARCHITECTURE.md explains 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-video at 54, skillify 51, second-brain 48, slide-deck 38, company-brain 33, domain 32, and the setup advice follows: install the central skills first, since watch-video needs yt-dlp, ffmpeg and MLX-Whisper and second-brain needs 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 one v0.5.0 release may hold skills at 0.1.0, 0.1.1, 0.2.0 and 0.3.1 at once.

  3. 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 add re-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 installs decide, 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.co and 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-skill archive/ folder, each affected skill given a best-effort migration, and five skills bumped to 0.2.0. The same class of bug turned up in three more places while the fix was written — jab-hook, toolify and pm each stored state inside their own skill folder. The release that carried it is titled v1.2.0 — archives out of the install tree (user-state safety).

  4. 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 decide has 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; decide went to 0.3.0, the plugin to v1.4.0, and the frontmatter was re-validated with js-yaml. The second is issue 2, filed the day v1.0.1 fixed 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 caps description at 1,024 characters and name at 64, and counting rather than eyeballing found six of the nineteen skills then on main over the maximum, company-brain at 1,411 characters and skillify at 1,267. It is the only comment in the thread set from somebody other than the author.

  5. 05

    Issue first, and one skill held back on purpose

    Two skills in this period were designed in the open, proposal first. unstuck came from issue 9 on 2026-07-15 with a lane table separating it from its neighbours — decide chooses between known options, business-brainstorm evaluates an idea, deep-research gathers 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 day v1.5.0 shipped 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 to decide. The pull request states the count it moved: nineteen skills to twenty.

  6. 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 /radar skill 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.0 borrowing keyless Bluesky and fediverse instance APIs, then v0.3.0 promoting 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 via git 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 before v1.5.0 could ship. Documentation drifts too: the README counts twenty-one skills and lists ingest, while ARCHITECTURE.md still says twenty and its family tables have no ingest row.

Adjacent records

All records →