status: active
timestamp: 2026-06-28
tags: [architecture, skills, agents, junctions, workspace-scoped]
Skills in .agents/skills/ workspace-scoped + junctions for all 5 agents
Canonical skills dir .agents/skills/, NTFS junctions, 5 agents
Skills in .agents/skills/ workspace-scoped
What
All agent skills (21 as of 2026-06-28) live in one canonical directory at:
c:/D/oriz/.agents/skills/<skill-name>/SKILL.md
This dir is workspace-scoped, committed to the oriz umbrella repo, version-controlled with the rest of the workspace. Migrating to another project = copy .agents/skills/ into the new project’s root.
Why this architecture (over previous submodule pattern)
Previously: chirag127/agent-skills git submodule at repos/own/agent-skills/. Archived 2026-06-28 (gh repo archive). Reasons for the move:
- Submodule overhead — every fresh clone required
--recurse-submodules+ bootstrap to set up symlinks. New project = friction. - Submodule pointer drift —
git submodule statusshowed stale SHA if skills were edited but pointer not bumped. Forgettable. - Skill discoverability — skills inside
repos/own/agent-skills/were buried 3 levels deep. Workspace-root.agents/skills/is discoverable.
Workspace-scoped trades submodule reusability for migration ergonomics. The 21 skills can still be extracted as a standalone repo later if needed.
Per-agent paths — table of truth
Five agents are supported. Each reads skills from its own canonical path. All 4 per-agent paths are NTFS junctions pointing at c:/D/oriz/.agents/skills/.
| Agent | Project (workspace) path | Global (per-user) path | Junction status |
|---|---|---|---|
| Canonical | c:/D/oriz/.agents/skills/ | n/a | real dir |
| Claude Code | .claude/skills/ | ~/.claude/skills/ | both junctions → canonical |
| Cline | reads Claude’s .claude/skills/ | reads ~/.claude/skills/ | covered by Claude junctions |
| Kilo Code | .kilocode/skills/ | ~/.kilocode/skills/ (not symlinked yet) | project junction → canonical |
| OpenCode | falls back to .agents/skills/ natively | reads ~/.agents/skills/ | global junction → canonical |
| Antigravity / Codex / 30+ Open Standard agents | reads .agents/skills/ natively | reads ~/.agents/skills/ | covered |
How junctions are created on Windows
NTFS junctions (not symbolic links) are used because:
- Junctions work for any user without admin elevation
- Symbolic links require Developer Mode OR admin
- For directory targets, the behavior is identical
Create via:
python -c "import subprocess; subprocess.run(['cmd', '/c', 'mklink', '/J', r'C:\Users\C5420321\.claude\skills', r'C:\D\oriz\.agents\skills'])"
Or PowerShell elevated:
New-Item -ItemType SymbolicLink -Path 'C:\Users\C5420321\.claude\skills' -Target 'C:\D\oriz\.agents\skills'
Migration to a new project
- Copy
.agents/skills/into the new project’s root (or symlink it). - Create junctions from
.claude/skills/and.kilocode/skills/to the new location. - Optionally repoint
~/.claude/skills/and~/.agents/skills/if you want the same skills used in OTHER projects too.
No git submodule init required. No bootstrap script. Just copy + 4 junction commands.
Layout (19 skills)
.agents/skills/
├── agent-browser/ # Browser automation (Rust, Chrome CDP)
├── cloudflare/ # Cloudflare platform reference
├── cloudflare-email-service/ # CF Email Sending + Routing
├── develop-userscripts/ # Tampermonkey/ScriptCat
├── frontend-design/ # UI/UX component patterns
├── github-actions-docs/ # GH Actions reference
├── grill-me/ # Decision-tree MCQ pattern
├── karpathy-guidelines/ # LLM coding guidelines
├── obsidian-bases/ # Obsidian Bases (.base)
├── obsidian-cli/ # Obsidian CLI ops
├── obsidian-defuddle/ # Markdown extraction
├── obsidian-json-canvas/ # .canvas files
├── obsidian-markdown/ # Obsidian Flavored Markdown
├── secure-linux-web-hosting/ # Linux server hardening
├── smithery-ai-cli/ # Smithery toolbox CLI
├── use-my-browser/ # Live browser session driver
├── web-design-reviewer/ # UX/A11Y review
├── webapp-testing/ # Web app testing workflows
├── workers-best-practices/ # CF Workers patterns
└── wrangler/ # CF Wrangler CLI
Invariants
.agents/skills/is the only canonical copy. Edit skills here, commit to oriz.- All per-agent dirs are junctions. If
~/.claude/skills/becomes a real dir (someone copied content into it), the invariant breaks —link.shis idempotent but won’t clobber real dirs. - Skills added through the canonical path appear in all 5 agents automatically. No copy step.
- Removed:
chirag127/agent-skillssubmodule. Repo archived on GitHub 2026-06-28. Don’t re-add as a submodule.
What was archived
The old submodule chirag127/agent-skills was archived on GitHub via gh repo archive. Read-only from 2026-06-28 onwards. Reversible via gh repo unarchive. The 21 skills’ git history is preserved in that archived repo if anyone needs blame data; otherwise the live source is here in oriz.
Related
- [[grill-me-default]] — the grill-me discipline is one of the skills here