{"id":50232988,"url":"https://github.com/jjmartres/ai-coding-agents","last_synced_at":"2026-08-09T12:30:15.660Z","repository":{"id":354600375,"uuid":"1215180660","full_name":"jjmartres/ai-coding-agents","owner":"jjmartres","description":"Single source of truth for AI coding agent configuration — skills, commands and rules shared across OpenCode and Pi.","archived":false,"fork":false,"pushed_at":"2026-06-10T10:19:08.000Z","size":2382,"stargazers_count":30,"open_issues_count":1,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T10:23:16.417Z","etag":null,"topics":["agents","agentskills","claude-code","claude-skills","configuration","dotfiles","gemini-cli","opencode","pi","pi-mono","skills"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jjmartres.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"docs/AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-19T15:31:49.000Z","updated_at":"2026-06-10T10:18:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jjmartres/ai-coding-agents","commit_stats":null,"previous_names":["jjmartres/ai-coding-agents"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jjmartres/ai-coding-agents","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjmartres%2Fai-coding-agents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjmartres%2Fai-coding-agents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjmartres%2Fai-coding-agents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjmartres%2Fai-coding-agents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jjmartres","download_url":"https://codeload.github.com/jjmartres/ai-coding-agents/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjmartres%2Fai-coding-agents/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36453468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-09T02:00:06.528Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","agentskills","claude-code","claude-skills","configuration","dotfiles","gemini-cli","opencode","pi","pi-mono","skills"],"created_at":"2026-05-26T19:00:32.255Z","updated_at":"2026-08-09T12:30:15.640Z","avatar_url":"https://github.com/jjmartres.png","language":"TypeScript","funding_links":[],"categories":["Extensions"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eai-coding-agents\u003c/h1\u003e\n  \u003cimg src=\"illustration.png\" alt=\"ai-coding-agents illustration\" width=\"800\" /\u003e\n  \u003cp\u003e\u003cstrong\u003ePersonal AI agent configuration managed with GNU Stow — shared across opencode and pi-mono.\u003c/strong\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://awesome.re\"\u003e\u003cimg src=\"https://awesome.re/badge.svg\" alt=\"Awesome\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/jjmartres/ai-coding-agents\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/jjmartres/ai-coding-agents?label=Last%20update\u0026style=flat-square\" alt=\"Last Update\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/jjmartres/ai-coding-agents/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/jjmartres/ai-coding-agents\" alt=\"GitHub Issues\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/jjmartres/ai-coding-agents/pulls\"\u003e\u003cimg src=\"https://img.shields.io/github/issues-pr/jjmartres/ai-coding-agents\" alt=\"GitHub Pull Requests\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003e **Migration notice**\n\u003e\n\u003e I am migrating from **opencode** to **pi-mono**. This repository replaces\n\u003e [jjmartres/opencode](https://github.com/jjmartres/opencode), which is now\n\u003e archived and read-only. During the transition both agent tools are supported\n\u003e here. This is the long-term home for all shared agent configuration going\n\u003e forward.\n\n---\n\n## Table of Contents\n\n- [What this repo is](#what-this-repo-is)\n- [Prerequisites](#prerequisites)\n- [Repository structure](#repository-structure)\n- [Stow packages](#stow-packages)\n- [Installation](#installation)\n- [Make targets](#make-targets)\n- [Pre-commit hooks](#pre-commit-hooks)\n- [Development](#development)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](#contributing)\n- [Architecture](docs/ARCHITECTURE.md)\n\n## What this repo is\n\nThree [GNU Stow](https://www.gnu.org/software/stow/) packages, all targeting\n`$HOME`, that deploy:\n\n- **80+ agent persona files** shared between opencode and pi-mono\n- **19 reusable skill packs** covering diagrams, code docs, Jira, Datadog, robotics, and more\n- **14 slash commands** for common workflows (commit, review, test, speckit, …)\n- **opencode-specific** configuration: `opencode.jsonc`, MCP servers, themes, plugins\n- **pi-mono-specific** configuration: settings, models, TypeScript extensions\n\n## Prerequisites\n\n| Tool | Purpose | Required |\n|------|---------|----------|\n| [GNU Stow](https://www.gnu.org/software/stow/) | Symlink farm manager | Yes |\n| [opencode](https://opencode.ai) | AI coding agent | If using the `opencode` package |\n| [pi-mono](https://github.com/mariozechner/pi) | AI coding agent | If using the `pi-mono` package |\n| [Node.js](https://nodejs.org/) v18+ | JSONC validation script | Yes |\n| [TypeScript](https://www.typescriptlang.org/) | pi-mono extension typechecking | Yes (`npm install -g typescript`) |\n| [pre-commit](https://pre-commit.com/) | Git hook framework | Optional |\n\n**macOS:**\n\n```bash\nbrew install stow node pre-commit\nnpm install -g typescript\n```\n\n## Repository structure\n\n```\nai-coding-agents/\n├── shared/                          # Stow package 1 — shared across both agents\n│   └── .ai-agents/\n│       ├── agents/                  # 80+ agent persona .md files\n│       │   ├── 00-general/\n│       │   ├── 01-core/\n│       │   ├── 02-languages/\n│       │   ├── 03-infrastructure/\n│       │   ├── 04-quality-and-security/\n│       │   ├── 05-data-ai/\n│       │   ├── 06-developer-experience/\n│       │   ├── 07-specialized-domains/\n│       │   ├── 08-business-product/\n│       │   ├── 09-meta-orchestration/\n│       │   └── 10-curiosity/\n│       ├── commands/                # Shared slash commands\n│       │   ├── astro-dso-doc.md\n│       │   ├── commit.md\n│       │   ├── commit-and-create-mr.md\n│       │   ├── compose-email.md\n│       │   ├── datadog.md\n│       │   ├── documentation.md\n│       │   ├── fix-renovate-mr.md\n│       │   ├── memory-bank.md\n│       │   ├── next-sprint-design.md\n│       │   ├── prepare-dataset.md\n│       │   ├── review.md\n│       │   ├── speckit.model-selector.md\n│       │   ├── speckit.polish.md\n│       │   └── test.md\n│       ├── rules/\n│       │   └── memory-bank.md\n│       └── skills/                  # Reusable skill packs\n│           ├── asdf/\n│           ├── content-research-writer/\n│           ├── datadog/\n│           ├── document-code/\n│           ├── document-project/\n│           ├── file-organizer/\n│           ├── glab/\n│           ├── httpie/\n│           ├── humanizer/\n│           ├── jira/\n│           ├── karpathy-guidelines/\n│           ├── marp-slide/\n│           ├── mcp-builder/\n│           ├── meeting-insights-analyzer/\n│           ├── mermaid-diagrams/\n│           ├── reachy-mini-sdk/     # git submodule\n│           ├── work-on-ticket/\n│           ├── worktrunk/\n│           └── writing-clearly-and-concisely/\n│\n├── opencode/                        # Stow package 2 — opencode-specific\n│   └── .config/opencode/\n│       ├── opencode.jsonc\n│       ├── cost-guard.config.jsonc\n│       ├── tui.jsonc\n│       ├── plugins/\n│       └── themes/                  # Catppuccin variants\n│\n├── pi-mono/                         # Stow package 3 — pi-mono-specific\n│   └── .pi/agent/\n│       ├── settings.json\n│       ├── models.json\n│       ├── auth.json\n│       ├── themes/\n│       └── extensions/              # TypeScript extensions\n│           ├── agents.ts\n│           ├── aliases.ts\n│           ├── git-checkpoint.ts\n│           ├── permission-gate.ts\n│           ├── piline.ts\n│           ├── protected-paths.ts\n│           ├── rules.ts\n│           ├── sessions-management.ts\n│           ├── skills-searcher.ts\n│           ├── skills.ts\n│           ├── todo.ts\n│           ├── tps.ts\n│           └── usage.ts\n│\n├── scripts/\n│   └── validate-jsonc.js\n├── .pre-commit-config.yaml\n├── .stowrc\n└── Makefile\n```\n\n## Stow packages\n\n### `shared/` → `~/.ai-agents/`\n\nContains everything that both opencode and pi-mono consume: agent personas,\nskill packs, slash commands, and rules. Stow maps the contents of\n`shared/` directly into `$HOME`, so `shared/.ai-agents/` lands at\n`~/.ai-agents/`.\n\n### `opencode/` → `~/.config/opencode/`\n\nopencode application config: main `opencode.jsonc`, cost-guard settings,\nTUI theme preferences, plugins, and Catppuccin UI themes.\n\n**Shared symlinks (not managed by Stow)**\n\nopencode expects agents, skills, commands, and rules under\n`~/.config/opencode/`. Stow cannot map the same source directory to two\ndifferent destinations, so `make install` creates these four symlinks\nseparately:\n\n```\n~/.config/opencode/agents    →  ~/.ai-agents/agents\n~/.config/opencode/skills    →  ~/.ai-agents/skills\n~/.config/opencode/commands  →  ~/.ai-agents/commands\n~/.config/opencode/rules     →  ~/.ai-agents/rules\n```\n\nRun `make link-shared` to create them independently. See `make status` to\nverify.\n\n### `pi-mono/` → `~/.pi/`\n\npi-mono application config: settings, model definitions, auth, themes, and a\nset of TypeScript extensions that add custom behaviour (agent loading, skill\nsearch, session management, git checkpoints, usage tracking, and more).\n\n## Installation\n\n```bash\n# Clone (include submodules)\ngit clone --recurse-submodules https://github.com/jjmartres/ai-coding-agents.git\ncd ai-coding-agents\n\n# Stow all packages, init submodules, and create the agents symlink\nmake install\n\n# (Optional) Install pre-commit hooks\nmake install-hooks\n```\n\nAfter install, symlinks under `$HOME` point back into this repo. Edit files\nhere; changes take effect immediately.\n\n## Make targets\n\n```\nInstallation\n  install              Stow all packages + init submodules + create shared symlinks\n  submodules           Initialize and update git submodules\n  stow-install         Stow all packages only\n  link-shared          Create ~/.config/opencode/{agents,skills,commands,rules} symlinks\n  uninstall            Remove shared symlinks + unstow all packages\n  restow               Re-run stow (use after adding/removing files)\n\nUtilities\n  check                Verify setup (directories, stow binary, .stowrc)\n  status               Show linked packages and shared symlinks state\n  clean                Remove broken symlinks under ~/.ai-agents and ~/.config/opencode\n\nPre-commit hooks\n  install-hooks        Install pre-commit hooks\n  uninstall-hooks      Remove pre-commit hooks\n  run-hooks            Run all hooks against all files\n  update-hooks         Update hooks to latest versions\n```\n\n## Pre-commit hooks\n\n| Hook | What it checks |\n|------|---------------|\n| `check-stowrc-exists` | `.stowrc` is present |\n| `validate-makefile` | Makefile parses without syntax errors |\n| `typecheck-extensions` | pi-mono TypeScript extensions pass `tsc --noEmit` |\n| `validate-jsonc` | All `.jsonc` files are valid JSON-with-comments |\n| `trailing-whitespace` | No trailing whitespace |\n| `end-of-file-fixer` | Files end with a newline |\n| `check-yaml` | YAML files are valid |\n| `check-json` | JSON files (non-JSONC) are valid |\n| `check-added-large-files` | No files larger than 1 MB |\n| `check-merge-conflict` | No leftover conflict markers |\n| `detect-private-key` | No accidental private key commits |\n| `mixed-line-ending` | Enforces LF line endings |\n| `markdownlint` | Markdown in `shared/` passes `.markdownlint.yaml` |\n| `shellcheck` | Shell scripts pass `shellcheck --severity=warning` |\n\n## Development\n\n### Adding an agent\n\nCreate a `.md` file in the appropriate category under\n`shared/.ai-agents/agents/`. No re-stowing needed — the directory is already\nsymlinked.\n\n### Adding a skill\n\nCreate a subdirectory under `shared/.ai-agents/skills/` with a `SKILL.md`\nentry point. Same as agents: no re-stowing needed.\n\n### Adding or removing files in a stow package\n\nAfter adding or deleting files in `opencode/` or `pi-mono/`:\n\n```bash\nmake restow\n```\n\n### Running hooks manually\n\n```bash\nmake run-hooks\n\n# Or target a single hook\npre-commit run typecheck-extensions --all-files\npre-commit run markdownlint --all-files\n```\n\n### Updating configuration\n\n```bash\ngit pull origin main\nmake restow\n```\n\n## Troubleshooting\n\n**Symlinks not created / stow conflicts**\n\n```bash\nmake status          # check what's linked\nmake clean           # remove broken symlinks\nmake uninstall\nmake install\n```\n\n**Agents not loading in opencode**\n\n```bash\n# Verify the shared symlinks exist\nls -la ~/.config/opencode/agents ~/.config/opencode/skills\n\n# Recreate them if missing\nmake link-shared\n```\n\n**TypeScript typecheck fails**\n\n```bash\n# Ensure tsc is available\nnpm install -g typescript\n\n# Run the check manually\npre-commit run typecheck-extensions --all-files\n```\n\n**JSONC validation fails**\n\n```bash\n# Ensure Node.js \u003e= 18 is installed\nnode --version\n\n# Run the check manually\npre-commit run validate-jsonc --all-files\n```\n\n**Submodule missing or empty**\n\n```bash\n# If you cloned without --recurse-submodules\nmake submodules\n\n# Or manually\ngit submodule update --init --recursive\n```\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for how to add agents, skills, commands, and rules, coding standards, and how the pre-commit hooks work.\n\n---\n\nMIT License — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjmartres%2Fai-coding-agents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjjmartres%2Fai-coding-agents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjmartres%2Fai-coding-agents/lists"}