workspace
Skill145 starsChanged 20 days agoMITView on GitHub
Use when coordinating a multi-repo workspace — init the .adlc/ structure, discover and link child repos as submodules, or audit workspace health (branch, dirty, unpushed, SHA drift).
19 other projects use a version of this.
Adopted by
Most recently taken up by
- jocarrd/crux-agentstheir own version, first seen Nov 8, 2026
- SethGammon/Citadeltheir own version, first seen Nov 4, 2026
- fainir/agent-harnesstheir own version, first seen Nov 1, 2026
- bks-lab/open-bridgetheir own version, first seen Oct 30, 2026
- nodealchemy/powernode-platformtheir own version, first seen Oct 25, 2026
- noahcostakes/claudebrain-templatetheir own version, first seen Oct 15, 2026
Used with
Projects with it also use schedule, improve and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
bivexSkillschedule
Управление расписанием занятий с специалистами по самосовершенствованию. Используй когда пользователь спрашивает о расписании, хочет добавить/удалить/перенести занятие, посмотреть план на день или неделю.
Also in 3 projects that use this
AnasX7Skillimprove
Survey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute. Strictly read-only on source code — never implements, fixes, or refactors anything itself. Use when asked to audit a codebase, find improvement opportunities (bugs, security, performance, test coverage, tech debt, migrations, DX), suggest features or where to take the project next (roadmap, product direction), or generate handoff plans for another agent to implement.
Also in 3 projects that use this
GoogleSkilldashboard
Configures and launches the GKE Capacity & Triage Dashboard scoped to a GCP project ID, GKE cluster name, or target ML workload ID. Uses the configure-and-launch-dashboard action and launch-workload-dashboard workflow to verify local dashboard health, discover cluster capacity, trigger live scans, and generate deep-linked URLs. Use when the user types "/dashboard", says "launch dashboard", "open dashboard", "show capacity", or "view triage dashboard" with a project, cluster, or workload. Don't use for general workload log querying or automated failure attribution (use the troubleshoot skill).
Also in 3 projects that use this
renatorozasSkillgrill
Adversarial code review. Don't let me ship until the changes pass your scrutiny.
Also in 3 projects that use this
GitHubSkillprd
Generate high-quality Product Requirements Documents (PRDs) for software systems and AI-powered features. Includes executive summaries, user stories, technical specifications, and risk analysis.
Also in 3 projects that use this
genomewalkerSkilllearn
Learn from web sources, generate SKILL.md, and store key patterns in soul memory. Trigger keywords: learn, skill-gen, web-learn, documentation, tutorial.
Also in 3 projects that use this
Other versions19 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 19
- SethGammon/Citadel★ 927same name
- alinaqi/maggy★ 711same name
- alinaqi/claude-bootstrap★ 708same name
- ZimoLiao/scholaraio★ 585same name
- ulises-jeremias/agent-toolkit★ 19same name
- bks-lab/open-bridge★ 13same name
- HaipingShi/coderail★ 8same name
- kauffj/agent-config★ 8same name
- jocarrd/crux-agents★ 4same name
- mayankjain1815-commits/CITADEL★ 4same name
9 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository48 other files it gives its agents.
- architect-analyzeSkill
- architect-bootSkill
- architect-clarifySkill
- architect-implementSkill
- architect-initSkill
- architect-specifySkill
- writing-skillsSkill
- change-bootSkill
- change-clarifySkill
- change-initSkill
- change-publishSkill
- change-specifySkill
- evals-analyzeSkill
- evals-clarifySkill
- evals-implementSkill
- evals-initSkill
- evals-specifySkill
- evals-validateSkill
- factory-cleanSkill
- factory-initSkill
- factory-intentSkill
- factory-learnSkill
- factory-missionSkill
- factory-orchestratorSkill
- factory-queueSkill
- factory-releaseSkill
- factory-reviewSkill
- factory-runbookSkill
- factory-setupSkill
- factory-ticketsSkill
- mission-briefSkill
- product-analyzeSkill
- product-bootSkill
- product-clarifySkill
- product-implementSkill
- product-initSkill
- product-roadmapSkill
- product-specifySkill
- team-bootSkill
- team-constitutionSkill
- team-diagnoseSkill
- team-discoverSkill
- team-initSkill
- team-levelupSkill
- team-repairSkill
- team-setupSkill
- team-skillsSkill
- tech-radar-bootSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 1 is distinctive, and 13 are very specific to this project.
0
Common
Most of the 17 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 36
Workspace already initialized: Use /workspace --status to audit instead.
- Very specific: line 37
Only auditing child repo state: Use /workspace (read-only discovery + status).
- Very specific: line 38
Linking additional child repos after init: Use /workspace --link directly.
- Very specific: line 64
Run the init setup script to create .adlc/ structure, check .gitignore conventions, and discover child repos:
- Very specific: line 107
After init setup, if --link or --ignore-only is also specified, proceed to the corresponding action mode below.
- Distinctive: line 111
Run the workspace coordinator script:
- Very specific: line 215
Action: If GITIGNORE_RULES_MISSING is non-empty, add the missing rules to .gitignore.
- Very specific: line 236
If --link or --ignore-only is combined with --init, execute the corresponding action after init setup.
- Very specific: line 251
Add each discovered child repo to .gitignore instead of creating submodules.
- Very specific: line 254
If tracked in parent index: git rm --cached <name> (remove from index, keep on disk)
- Very specific: line 255
Add <name>/ to .gitignore if not already present
- Very specific: line 258
Commit with message [workspace] Add child repos to .gitignore if changes were made.
- Very specific: line 314
--initis safe: Only creates directories and reports missing .gitignore rules. - Very specific: line 315
.gitignorechanges are additive: Only adds missing rules; never removes existing rules.
“Common” is measured: kept by at least 6 in 10 of the 17 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
workspace
Scope rule: scripts stay skill-local — never source a script from another skill. For another skill's operations, invoke that skill (e.g.
architect-clarify,product-clarify,team-boot) via the Skill tool; for its documents, follow theRequiresline.scripts/andreferences/below are relative to this skill.{REPO_ROOT}denotes the project root (where.adlc/lives).
Overview
A multi-repo workspace coordinator for shared team context. The parent
repository holds shared decisions (PDRs, ADRs, CDRs) under .adlc/,
created by product-specify, architect-specify, and team-levelup.
Child implementation repositories are discovered at depth 1 and optionally
linked as Git submodules so the entire workspace can be cloned with
git clone --recursive.
No workspace.yml, no registry file. Pure convention:
- Parent repo = current working directory (must be a Git repo)
- Child repos = depth-1 subdirectories containing
.git/ - Shared context =
.adlc/in parent root
When to Use
- First-time setup (
--init): Create.adlc/directory structure, configure.gitignoreconventions, and optionally link child repos. - After
product-specifyorarchitect-specifyhas created shared PDRs/ADRs in the parent repo and you have multiple implementation repos alongside. - When you've cloned new child repos into the workspace and want to register them as submodules (
--link) or ignore them (--ignore-only). - To audit workspace health: dirty working trees, unpushed commits, SHA drift between parent submodule reference and child HEAD.
- To verify child repos can see the parent
.adlc/shared context.
When NOT to Use --init
- Workspace already initialized: Use
/workspace --statusto audit instead. - Only auditing child repo state: Use
/workspace(read-only discovery + status). - Linking additional child repos after init: Use
/workspace --linkdirectly.
User Input
$ARGUMENTSCommands
| Command | Purpose |
/workspace --init | Initialize: create .adlc/ structure, configure .gitignore, discover child repos |
/workspace | Discover child repos, show summary status (read-only) |
/workspace --link | Convert child repos to Git submodules (requires clean parent tree) |
/workspace --status | Detailed audit: branch, dirty, unpushed, SHA drift, .adlc presence |
/workspace --ignore-only | Add child repos to .gitignore instead of creating submodules |
/workspace --init --link | Initialize + link child repos in one step |
/workspace --init --ignore-only | Initialize + add child repos to .gitignore |
/workspace --dry-run | Preview changes without executing (combine with --init, --link, --ignore-only) |
/workspace --force | Convert repos already tracked by parent index (requires clean tree) |
Execution
Init Mode (--init)
Run the init setup script to create .adlc/ structure, check .gitignore conventions, and discover child repos:
# Bash
scripts/bash/setup-workspace.sh --json
# PowerShell
scripts/powershell/setup-workspace.ps1Init setup output (JSON):
{
"REPO_ROOT": "/path/to/parent",
"ADLC_DIR": "/path/to/parent/.adlc",
"ADLC_DIRS_CREATED": [".adlc/product", ".adlc/drafts", ".adlc/drafts/pdr"],
"GITIGNORE_EXISTS": true,
"GITIGNORE_RULES_MISSING": [".adlc/"],
"CHILD_REPOS": [
{"name": "backend-api", "path": "/path/to/parent/backend-api", "remote": "git@github.com:org/backend-api.git", "is_submodule": false, "is_tracked": false}
],
"CHILD_COUNT": 1,
"BRANCH": "main"
}Directories created:
.adlc/
├── product/ # PDRs (product-specify, product-init)
├── architecture/ # ADRs (architect-specify, architect-init)
├── context/ # CDRs (team-levelup, team-init)
├── skills/ # Team skills metadata
└── drafts/ # Draft artifacts before clarification
├── pdr/
├── adr/
├── cdr/
├── skills/
└── evals/After init setup, if --link or --ignore-only is also specified, proceed to the corresponding action mode below.
Audit/Link Mode (default, --link, --status, --ignore-only)
Run the workspace coordinator script:
# Bash
"$(dirname "$0")/../scripts/bash/workspace.sh" --json [--link] [--status] [--dry-run] [--force] $ARGUMENTSParse the JSON output and present it to the user.
Output Contract
Init Mode Output
Emitted by setup-workspace.sh --json (see above).
Audit/Link Mode Output
Emitted by workspace.sh --json:
{
"PARENT_REPO": "/abs/path/to/parent",
"PARENT_BRANCH": "main",
"PARENT_HAS_ADLC": true,
"MODE": "discover|link|status",
"DRY_RUN": false,
"DISCOVERED_COUNT": 3,
"REGISTERED_COUNT": 2,
"SKIPPED_COUNT": 1,
"ERROR_COUNT": 0,
"REPOS": [
{
"name": "backend-api",
"path": "/abs/path/to/parent/backend-api",
"remote": "git@github.com:org/backend-api.git",
"branch": "main",
"dirty": false,
"unpushed": 0,
"is_submodule": true,
"parent_sha": "abc1234",
"child_sha": "abc1234",
"sha_drift": false,
"has_adlc": false
}
],
"ERRORS": []
}Init Phases
Phase 1: .adlc/ Structure Creation
The setup script creates the .adlc/ directory tree if it doesn't exist (product/, drafts/, and the per-family draft subdirectories — the shared layout scopes .adlc/ to machine pipeline state). This is the shared context directory where other skills write drafts and pipeline state; published decision records and compiled deliverables live under docs/adlc/.
Idempotent: already-existing directories are not recreated.
Phase 2: .gitignore Configuration
The setup script checks .gitignore for workspace conventions and reports missing rules.
Allowlist model — .adlc/ is no longer ignored wholesale. Machine pipeline state is ignored via .adlc/* with tracked exceptions re-included; published content under docs/adlc/ is always tracked:
# agent-install surface (regenerated)
.agents/
.opencode/
.claude/
.cursor/
.codex/
.gemini/
.qwen/
.devin/
.tabnine/
skills-lock.json
.skills.json
# .mcp.json is deliberately ABSENT: it is committed project source
# (human-edited, never generated), not a derived artifact.
.events.json
.pytest_cache/
.ruff_cache/
# machine pipeline + runtime state (tracked exceptions follow)
.adlc/*
!.adlc/init-options.json
!.adlc/workspace.yml
!.adlc/drafts/
!.adlc/evals/
.adlc/evals/results/
!.adlc/memory/
.adlc/memory/*
!.adlc/memory/evals/
!.adlc/memory/evals/holdout.json
# generated reports (legacy name kept during transition)
.adlc/team-learn-report.md
.adlc/team-levelup-report.md
# knowledge graph (generated)
graphify-out/The allowlist has a single definition in scripts/bash/paths.sh (GITIGNORE_RULES_ALLOWLIST, mirrored in scripts/powershell/paths.ps1); the setup scripts source it and report any missing rules. Tracked legacy files keep working — gitignore gates only untracked files.
Action: If GITIGNORE_RULES_MISSING is non-empty, add the missing rules to .gitignore. Do NOT remove existing rules. If changes were made and not in --dry-run mode, commit with message [workspace] Configure .gitignore for workspace conventions.
Phase 3: Child Repo Discovery
Review discovered child repos from setup output.
Present discovered repos:
## Discovered Child Repos
| # | Repo | Remote | Submodule? | Tracked? |
|---|------|--------|------------|----------|
| 1 | **backend-api** | git@github.com:org/backend-api.git | No | No |
| 2 | **frontend** | git@github.com:org/frontend.git | Yes | N/A |
Reply: Y to proceed with --link/--ignore-only, or adjust.Phase 4: Child Repo Action (optional)
If --link or --ignore-only is combined with --init, execute the corresponding action after init setup.
--link (Submodule Registration)
Delegates to workspace.sh --link. Safety checks enforced:
- Parent working tree must be clean (no uncommitted changes outside child repos)
- Child repos must have a remote
originURL configured - Remote URLs must use an allowed scheme (
https://,git@,ssh://) — anything else (e.g.http://,file://) is reported as an error and skipped - Already-registered submodules are skipped (idempotent)
- Repos tracked in parent index require
--force - Preview with
--dry-runfirst and confirm with the user before linking
--ignore-only (Ignore Instead of Submodule)
Add each discovered child repo to .gitignore instead of creating submodules.
For each child repo:
- If tracked in parent index:
git rm --cached <name>(remove from index, keep on disk) - Add
<name>/to.gitignoreif not already present - Skip repos already in
.gitignore(idempotent)
Commit with message [workspace] Add child repos to .gitignore if changes were made.
Use when: Child repos are truly independent projects; team members manage them separately.
Phase 5: Output Summary
## Workspace Init Complete
### .adlc/ Structure
- Created: 7 directories under `.adlc/` (`product/`, `drafts/`, `drafts/{pdr,adr,cdr,skills,evals}/`)
### .gitignore
- Rules added: 5
- Rules verified: 12
### Child Repos
- Discovered: 3
- Registered as submodules: 2
- Ignored: 0
- Skipped (already submodules): 1
### Next Steps
1. Create product decisions: `/product-specify`
2. Create architecture decisions: `/architect-specify`
3. Audit workspace health: `/workspace --status`Discovery Rules
| Rule | Behavior |
| Depth | 1 level only (direct subdirectories of parent root) |
| Detection | Directory contains .git/ directory or .git file |
| Exclusions | node_modules, .venv, venv, dist, build, target, .idea, .vscode, .git, .cache, .specify |
| No config file | No workspace.yml — pure auto-discovery |
Shared Team Context (.adlc/)
The parent repo's .adlc/ directory is the single source of truth for
team context. It is created by --init and maintained by other skills:
| Artifact | Path | Created By |
| PDR drafts | .adlc/drafts/pdr/ (accepted → docs/adlc/memory/pdr/) | product-specify, product-init |
| ADR drafts | .adlc/drafts/adr/ (accepted → docs/adlc/memory/adr/) | architect-specify, architect-init |
| CDRs | team-ai-directives adlc branch (local drafts in .adlc/drafts/cdr/) | team-levelup, team-init |
| Skills | installed skills (flat per skill) | team-skills |
| Directory structure | .adlc/ tree | workspace --init (this skill) |
In audit mode (default), this skill does not create or modify .adlc/ content. It only:
- Verifies the parent has
.adlc/(warns if missing). - Checks whether each child repo has its own
.adlc/(informational).
Safety
--initis safe: Only creates directories and reports missing.gitignorerules; never overwrites existing content..gitignorechanges are additive: Only adds missing rules; never removes existing rules.- Read-only by default:
/workspaceand/workspace --statusmake no changes. --linkrequires clean parent tree: uncommitted changes outside child repos abort the operation.--forceremoves child directories from the parent Git index (git rm --cached) before re-adding as submodules. Requires a clean working tree.- Idempotent: already-registered submodules, already-ignored repos, and already-created directories are skipped on re-run.
- Child repos without a remote
originare reported as errors and skipped during--link. --dry-runpreviews all changes without executing.
Common Rationalizations
| Rationalization | Why it's wrong | Do this instead |
"I'll create .adlc/ manually with mkdir" | Misses the full directory tree and .gitignore conventions | Run --init for complete initialization |
"I'll add workspace.yml for explicit repo list" | Adds config overhead; auto-discovery is simpler and sufficient | Use depth-1 discovery; exclude via .gitignore if needed |
"I'll skip the .gitignore setup" | Risks committing local agent state (.agents/, .opencode/) | Let --init configure conventions |
"I'll create .adlc/ in child repos too" | Diverges from single-source-of-truth model | Keep .adlc/ in parent only; children reference parent |
"I'll skip the clean-tree check for --link" | Risks losing uncommitted parent changes | Require clean tree; tell user to commit or stash first |
| "I'll use worktrees instead of submodules" | Worktrees are for feature isolation, not multi-repo coordination | Use submodules for tracked multi-repo linking |
"I'll use --ignore-only instead of submodules for everything" | Loses workspace coordination benefits | Use --link for tracked repos; --ignore-only only for independent projects |
Red Flags
- Running
--linkwithout checking parent working tree is clean. - Running
--forceon a parent with uncommitted changes outside child repos. - Creating
.adlc/content in child repos (parent is the single source). - Adding a
workspace.ymlor registry file (convention-only, no config). - Re-including
.specifyin discovery — the scripts hard-exclude it (see Discovery Rules), and that exclusion is intentional. - Modifying child repo contents during
--link(only parent index changes). - Skipping
.gitignoresetup when local agent directories exist.
Verification
- Parent repo is a Git repository.
--initcreates.adlc/with its subdirectories (product/,drafts/,drafts/{pdr,adr,cdr,skills,evals}/).--initreports missing.gitignorerules (additive, never removes).--initis idempotent (second run reports 0 dirs created).- Parent
.adlc/exists (warn if missing in audit mode). - Child repos discovered at depth 1 (excluding
node_modules,.venv, etc.). --linkonly runs when parent working tree is clean.- Already-registered submodules are skipped (idempotent).
- Child repos without
originremote are reported as errors. --statusreports branch, dirty state, unpushed count, SHA drift,.adlcpresence per child.--ignore-onlyadds repos to.gitignoreand removes from parent index.--dry-runproduces no file changes.- JSON output matches the Output Contract schema for both init and audit modes.
Integration with Existing Skills
| Skill | Relationship |
product-specify | Creates PDR drafts in parent .adlc/drafts/pdr/ after --init |
architect-specify | Creates ADR drafts in parent .adlc/drafts/adr/ after --init |
team-levelup | Creates CDR drafts (published to the team-ai-directives adlc branch) after --init |
team-boot | Loads parent .adlc context at session start |
team-setup | Configures agent directories (.agents/, .opencode/) — complement to --init |
12-Factor Alignment
Factor XI (Directives as Code) — establishes a version-controlled multi-repo workspace where shared decisions live in the parent and implementation repos are linked as submodules or ignored by convention.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

