One source of truth · many AI tools

Your AI muscle memory, everywhere.

A single repo of skills, rules, hooks, and MCP configs, shared across Cursor, Claude Code, and friends. Tool-neutral core/, thin adapters — install once, use everywhere.

curl -fsSL https://ai.happynguyen.name.vn/install.sh | bash

Want to read it first? Inspect then run · Manual clone

Architecture

Source in core/, one adapter per tool.

core/skills/

One folder per skill, each with a SKILL.md. Shared across every compatible tool.

core/rules/

Persistent conventions — coding style, commit style, per-language guidance.

core/hooks/

Event-driven automation with canonical event names; adapters translate.

core/agents/

Personas for specialized subagents (reviewer, planner, explorer).

core/mcp/

MCP server registry — rendered per tool at install time.

adapters/cursor/

Projects core/ into ~/.cursor/. Symlink-based, idempotent.

adapters/claude/

Projects core/ into ~/.claude/. soon

bin/cowork

The CLI. install, uninstall, list, doctor.

Supported tools

Your favorite AI coding environment, probably already on the list.

Cursor shipping

Full support: skills, rules, hooks, MCP template. Drop-in with cowork install --tool=cursor.

Claude Code on deck

Adapter scaffolded. Will render core/rules/ into CLAUDE.md, symlink skills, install hooks.

Aider · Continue · Codex planned

Adapter per tool. Each knows its native layout; core/ doesn't change.

Current skills

Triggered by natural language in any Cursor chat.

create-pr

Use when: "create a PR", "/create-pr"

Opens a GitHub PR with a well-structured summary via gh.

rebase

Use when: "rebase onto dev", "/rebase"

Rebases the current branch cleanly and reports conflicts.

review-pr

Use when: "review this PR", "/review-pr"

Reviews a GitHub PR for correctness, security, and conventions.

daily-standup

Use when: "standup", "/standup"

Turns recent git activity into a yesterday / today / blockers summary.

triage-issues

Use when: "triage issues", "/triage"

Groups open GitHub / Linear issues by priority and staleness.

release-notes

Use when: "draft release notes", "/release-notes"

Generates changelogs from a git range into Features / Fixes / Chores.

How it works

  1. 1. Curl the bootstrap

    curl -fsSL https://ai.happynguyen.name.vn/install.sh | bash

    It clones the repo into ~/code/happy-cowork and runs cowork install, which auto-detects the AI tools already on your machine.

  2. 2. Adapters project core/ into each tool

    The Cursor adapter symlinks core/skills/, core/rules/, core/hooks/ into ~/.cursor/. Other adapters (Claude, Aider, …) do the same for their respective homes. One source, many targets.

  3. 3. Use

    Open your tool and type a trigger phrase like /create-pr or "draft release notes for v1.2". The agent picks the matching skill by its description frontmatter.

Want the full walkthrough — prerequisites, update & uninstall, troubleshooting? → Full install guide

Design principles

  1. Symlink, don't copy. Edits in the repo take effect immediately in ~/.cursor/.
  2. One folder per skill. Keeps diffs and discovery clean.
  3. Descriptions matter. The agent selects skills by their description frontmatter — write it like a trigger phrase.
  4. No secrets in git. Use .env.example + direnv / 1Password CLI for anything sensitive.
  5. Promote twice-repeated prompts into skills. If I type the same instructions twice, it belongs here.

Roadmap