Skip to main content

workspace-layout

The canonical owner-prefixed workspace layout. Every repo lives at ~/Code/<host>/<owner>/<repo> -- no active/ or language segment. Enumerate with `ls ~/Code/github.com/*/*`; resolve siblings by path arithmetic. The manager (workspace-root) CLAUDE.md is a map of where things are and how to read them, never a cache of per-project inventory or status. Load this whenever a session reasons about where a repo lives, walks the workspace, or resolves one project from another.

Aller à l'installation

Informations de source

Dépôt
joshrotenberg/agent-tools
Dernière activité de la source
18 juin 2026 à 19:15
Langue détectée de SKILL.md
anglais
Étoiles
0
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
workspace-layout
description
The canonical owner-prefixed workspace layout. Every repo lives at ~/Code/<host>/<owner>/<repo> -- no active/ or language segment. Enumerate with `ls ~/Code/github.com/*/*`; resolve siblings by path arithmetic. The manager (workspace-root) CLAUDE.md is a map of where things are and how to read them, never a cache of per-project inventory or status. Load this whenever a session reasons about where a repo lives, walks the workspace, or resolves one project from another.
# Workspace layout The canonical convention for where every repo lives and how the manager session reasons about the workspace. This is the single source of truth for the path shape; other skills (`workspace-survey`, dispatch, sibling resolution) reference it rather than restating it. ## The path shape Every clone lives at one derivable, owner-prefixed path: ```text ~/Code/<host>/<owner>/<repo> ``` - `<host>` is the forge host (`github.com` today; the segment leaves room for others without reshuffling). - `<owner>` is the GitHub owner/org (`joshrotenberg`, `genagent`, ...). - `<repo>` is the repository name. Example: `~/Code/github.com/joshrotenberg/adrs`. **No `active/`, no `inactive/`, no language/framework segment.** Those facts are mutable and derivable; encoding them in the path rots it the moment a project changes language or goes dormant. Forks need no `-fork` suffix either -- the `<owner>` segment already disambiguates, and provenance lives in `git remote`. ## Enumeration The filesystem is the index. List every project with one glob: ```bash ls -d ~/Code/github.com/*/* ``` `<host>/<owner>/<repo>` is exactly three levels deep, so `*/*` under a host enumerates every repo. Do NOT walk by language buckets or look for an `active/` root -- there is none. A project is "in the workspace" if its directory exists under this layout. Whether it is actively worked is a *reconstituted* fact (recent commits, open PRs), not a path segment and not a cached flag. ## Sibling resolution is path arithmetic Because the path is derivable, one project resolves another by relative arithmetic from its own directory -- no lookup table, no config: | Target | From `~/Code/<host>/<owner>/<repo>` | |---|---| | Same owner, other repo | `../<repo>` | | Other owner, same host | `../../<owner>/<repo>` | | Other host entirely | `../../../<host>/<owner>/<repo>` | This is why the layout is owner-prefixed and flat: the deterministic cwd makes cross-project consultation pure path math, and the matching escaped dir under `~/.claude/projects/` is equally derivable. ## Map, not model: the manager CLAUDE.md The workspace-root `~/Code/CLAUDE.md` (the "manager" / Code Manager context) is a **map**: it says *where* projects are (this path convention + the enumeration glob) and *how* to read each one. It is not an inventory and not a status cache. Specifically, the manager CLAUDE.md must NOT carry: - A hardcoded project list / inventory (the glob enumerates it fresh). - Per-project last-seen PR/issue/CI/notable-change status. - Any "agents update this section when they learn something" cache. Per-project status is **reconstituted on demand** -- read the project's own files and query `gh` (or cratesio/hexpm) at the moment you need it, emit it to a report, and let it go. Nothing flows *upward* into the manager CLAUDE.md. The moment the map starts caching what is *inside* a project rather than *where* it is and *how to read it*, pull it back: that is the "map, not model" line, and crossing it turns the manager into the stateful system it must never become. ## When to apply - Any time a session needs the canonical path for a repo, or builds one from `<host>/<owner>/<repo>` parts. - Walking/enumerating the workspace (use the glob above). - Resolving a sibling project from the current one (path arithmetic). - Deciding what belongs in the manager CLAUDE.md vs. what must be reconstituted (the map/model line). ## Anti-patterns - Assuming an `~/Code/active/` root or a language/framework bucket -- there is none; that was the pre-reorg layout. - Walking deep directory trees looking for `.git/` when a single `ls ~/Code/github.com/*/*` glob enumerates everything. - Writing a project inventory or per-project status into the manager CLAUDE.md ("so the dispatcher doesn't have to re-survey") -- that is the cache the model forbids; reconstitute instead. ## Related - [`workspace-survey`](../workspace-survey/SKILL.md) -- how the dispatcher enumerates projects under this layout and reconstitutes a status report. - [`durable-context`](../durable-context/SKILL.md) -- why state is reconstituted from durable substrate, not carried in context or cached upward.
Voir sur GitHub