Sandbox
@jjmartres/ai-coding-agents

Stow-managed agent config for shared skills and commands

This repo keeps agent setup in one place and installs it into `$HOME` with GNU Stow. Shared files cover agents, skills, commands, and rules, while separate folders hold opencode and pi-mono settings and extensions.

45 stars4 forksTypeScriptUpdated 8d ago
Who it's for

Builders who want reusable agent instructions, skills, and commands across opencode and pi-mono.

What it delivers

You can keep agent behavior, workflows, and shared skills in sync without copying files by hand.

What it does

Shared agent library

Stores 80+ agent persona files in `shared/.ai-agents/agents/`.

Reusable skill packs

Provides 19 skill packs under `shared/.ai-agents/skills/` for tasks like diagrams, docs, Jira, Datadog, and writing.

Slash commands

Includes 14 shared command files in `shared/.ai-agents/commands/` for commit, review, test, and speckit workflows.

Shared rules

Keeps shared behavior rules in `shared/.ai-agents/rules/`, including the memory-bank rule.

Tool-specific config

Adds opencode config files, plugins, and themes in `opencode/.config/opencode/`, plus pi-mono settings, models, and TypeScript extensions in `pi-mono/.pi/agent/`.

Install and maintenance targets

Uses `make install`, `make restow`, `make link-shared`, and `make status` to set up and maintain the symlinks.

How to get it

  1. 1macOS
    brew install stow node pre-commit
    npm install -g typescript
  2. 2opencode expects agents, skills, commands, and rules under ~/.config/opencode/. Stow…
    ~/.config/opencode/agents    →  ~/.ai-agents/agents
    ~/.config/opencode/skills    →  ~/.ai-agents/skills
    ~/.config/opencode/commands  →  ~/.ai-agents/commands
    ~/.config/opencode/rules     →  ~/.ai-agents/rules
  3. 3After adding or deleting files in opencode/ or pi-mono/
    make restow
  4. 4Run
    make run-hooks
    
    # Or target a single hook
    pre-commit run typecheck-extensions --all-files
    pre-commit run markdownlint --all-files
  5. 5Run
    git pull origin main
    make restow
  6. 6Symlinks not created / stow conflicts
    make status          # check what's linked
    make clean           # remove broken symlinks
    make uninstall
    make install

README

ai-coding-agents

ai-coding-agents illustration

Personal AI agent configuration managed with GNU Stow — shared across opencode and pi-mono.

Awesome Last Update GitHub Issues GitHub Pull Requests


Migration notice

I am migrating from opencode to pi-mono. This repository replaces jjmartres/opencode, which is now archived and read-only. During the transition both agent tools are supported here. This is the long-term home for all shared agent configuration going forward.


Table of Contents

What this repo is

Three GNU Stow packages, all targeting $HOME, that deploy:

  • 80+ agent persona files shared between opencode and pi-mono
  • 19 reusable skill packs covering diagrams, code docs, Jira, Datadog, robotics, and more
  • 14 slash commands for common workflows (commit, review, test, speckit, …)
  • opencode-specific configuration: opencode.jsonc, MCP servers, themes, plugins
  • pi-mono-specific configuration: settings, models, TypeScript extensions

Prerequisites

ToolPurposeRequired
GNU StowSymlink farm managerYes
opencodeAI coding agentIf using the opencode package
pi-monoAI coding agentIf using the pi-mono package
Node.js v18+JSONC validation scriptYes
TypeScriptpi-mono extension typecheckingYes (npm install -g typescript)
pre-commitGit hook frameworkOptional

macOS:

brew install stow node pre-commit
npm install -g typescript

Repository structure

ai-coding-agents/
├── shared/                          # Stow package 1 — shared across both agents
│   └── .ai-agents/
│       ├── agents/                  # 80+ agent persona .md files
│       │   ├── 00-general/
│       │   ├── 01-core/
│       │   ├── 02-languages/
│       │   ├── 03-infrastructure/
│       │   ├── 04-quality-and-security/
│       │   ├── 05-data-ai/
│       │   ├── 06-developer-experience/
│       │   ├── 07-specialized-domains/
│       │   ├── 08-business-product/
│       │   ├── 09-meta-orchestration/
│       │   └── 10-curiosity/
│       ├── commands/                # Shared slash commands
│       │   ├── astro-dso-doc.md
│       │   ├── commit.md
│       │   ├── commit-and-create-mr.md
│       │   ├── compose-email.md
│       │   ├── datadog.md
│       │   ├── documentation.md
│       │   ├── fix-renovate-mr.md
│       │   ├── memory-bank.md
│       │   ├── next-sprint-design.md
│       │   ├── prepare-dataset.md
│       │   ├── review.md
│       │   ├── speckit.model-selector.md
│       │   ├── speckit.polish.md
│       │   └── test.md
│       ├── rules/
│       │   └── memory-bank.md
│       └── skills/                  # Reusable skill packs
│           ├── asdf/
│           ├── content-research-writer/
│           ├── datadog/
│           ├── document-code/
│           ├── document-project/
│           ├── file-organizer/
│           ├── glab/
│           ├── httpie/
│           ├── humanizer/
│           ├── jira/
│           ├── karpathy-guidelines/
│           ├── marp-slide/
│           ├── mcp-builder/
│           ├── meeting-insights-analyzer/
│           ├── mermaid-diagrams/
│           ├── reachy-mini-sdk/     # git submodule
│           ├── work-on-ticket/
│           ├── worktrunk/
│           └── writing-clearly-and-concisely/
│
├── opencode/                        # Stow package 2 — opencode-specific
│   └── .config/opencode/
│       ├── opencode.jsonc
│       ├── cost-guard.config.jsonc
│       ├── tui.jsonc
│       ├── plugins/
│       └── themes/                  # Catppuccin variants
│
├── pi-mono/                         # Stow package 3 — pi-mono-specific
│   └── .pi/agent/
│       ├── settings.json
│       ├── models.json
│       ├── auth.json
│       ├── themes/
│       └── extensions/              # TypeScript extensions
│           ├── agents.ts
│           ├── aliases.ts
│           ├── git-checkpoint.ts
│           ├── permission-gate.ts
│           ├── piline.ts
│           ├── protected-paths.ts
│           ├── rules.ts
│           ├── sessions-management.ts
│           ├── skills-searcher.ts
│           ├── skills.ts
│           ├── todo.ts
│           ├── tps.ts
│           └── usage.ts
│
├── scripts/
│   └── validate-jsonc.js
├── .pre-commit-config.yaml
├── .stowrc
└── Makefile

Stow packages

shared/~/.ai-agents/

Contains everything that both opencode and pi-mono consume: agent personas, skill packs, slash commands, and rules. Stow maps the contents of shared/ directly into $HOME, so shared/.ai-agents/ lands at ~/.ai-agents/.

opencode/~/.config/opencode/

opencode application config: main opencode.jsonc, cost-guard settings, TUI theme preferences, plugins, and Catppuccin UI themes.

Shared symlinks (not managed by Stow)

opencode expects agents, skills, commands, and rules under ~/.config/opencode/. Stow cannot map the same source directory to two different destinations, so make install creates these four symlinks separately:

~/.config/opencode/agents    →  ~/.ai-agents/agents
~/.config/opencode/skills    →  ~/.ai-agents/skills
~/.config/opencode/commands  →  ~/.ai-agents/commands
~/.config/opencode/rules     →  ~/.ai-agents/rules

Run make link-shared to create them independently. See make status to verify.

pi-mono/~/.pi/

pi-mono application config: settings, model definitions, auth, themes, and a set of TypeScript extensions that add custom behaviour (agent loading, skill search, session management, git checkpoints, usage tracking, and more).

Installation

# Clone (include submodules)
git clone --recurse-submodules https://github.com/jjmartres/ai-coding-agents.git
cd ai-coding-agents

# Stow all packages, init submodules, and create the agents symlink
make install

# (Optional) Install pre-commit hooks
make install-hooks

After install, symlinks under $HOME point back into this repo. Edit files here; changes take effect immediately.

Make targets

Installation
  install              Stow all packages + init submodules + create shared symlinks
  submodules           Initialize and update git submodules
  stow-install         Stow all packages only
  link-shared          Create ~/.config/opencode/{agents,skills,commands,rules} symlinks
  uninstall            Remove shared symlinks + unstow all packages
  restow               Re-run stow (use after adding/removing files)

Utilities
  check                Verify setup (directories, stow binary, .stowrc)
  status               Show linked packages and shared symlinks state
  clean                Remove broken symlinks under ~/.ai-agents and ~/.config/opencode

Pre-commit hooks
  install-hooks        Install pre-commit hooks
  uninstall-hooks      Remove pre-commit hooks
  run-hooks            Run all hooks against all files
  update-hooks         Update hooks to latest versions

Pre-commit hooks

HookWhat it checks
check-stowrc-exists.stowrc is present
validate-makefileMakefile parses without syntax errors
typecheck-extensionspi-mono TypeScript extensions pass tsc --noEmit
validate-jsoncAll .jsonc files are valid JSON-with-comments
trailing-whitespaceNo trailing whitespace
end-of-file-fixerFiles end with a newline
check-yamlYAML files are valid
check-jsonJSON files (non-JSONC) are valid
check-added-large-filesNo files larger than 1 MB
check-merge-conflictNo leftover conflict markers
detect-private-keyNo accidental private key commits
mixed-line-endingEnforces LF line endings
markdownlintMarkdown in shared/ passes .markdownlint.yaml
shellcheckShell scripts pass shellcheck --severity=warning

Development

Adding an agent

Create a .md file in the appropriate category under shared/.ai-agents/agents/. No re-stowing needed — the directory is already symlinked.

Adding a skill

Create a subdirectory under shared/.ai-agents/skills/ with a SKILL.md entry point. Same as agents: no re-stowing needed.

Adding or removing files in a stow package

After adding or deleting files in opencode/ or pi-mono/:

make restow

Running hooks manually

make run-hooks

# Or target a single hook
pre-commit run typecheck-extensions --all-files
pre-commit run markdownlint --all-files

Updating configuration

git pull origin main
make restow

Troubleshooting

Symlinks not created / stow conflicts

make status          # check what's linked
make clean           # remove broken symlinks
make uninstall
make install

Agents not loading in opencode

# Verify the shared symlinks exist
ls -la ~/.config/opencode/agents ~/.config/opencode/skills

# Recreate them if missing
make link-shared

TypeScript typecheck fails

# Ensure tsc is available
npm install -g typescript

# Run the check manually
pre-commit run typecheck-extensions --all-files

JSONC validation fails

# Ensure Node.js >= 18 is installed
node --version

# Run the check manually
pre-commit run validate-jsonc --all-files

Submodule missing or empty

# If you cloned without --recurse-submodules
make submodules

# Or manually
git submodule update --init --recursive

Contributing

See CONTRIBUTING.md for how to add agents, skills, commands, and rules, coding standards, and how the pre-commit hooks work.


MIT License — see LICENSE.

Files in the repo

Repository payload16 top-level entries
  • .github
  • docs
  • opencode
  • pi-mono
  • scripts
  • shared
  • .gitignore
  • .gitmodules
  • .markdownlint.yaml
  • .pre-commit-config.yaml
  • .stowrc
  • CONTRIBUTING.md
  • illustration.png
  • LICENSE
  • Makefile
  • README.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More harnesses

affaan-m/
ECC
affaan-m/ECCHarnesses

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

258k
ruvnet/rufloHarnesses

🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated

72k

Practical patterns, starters & CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.

11k