alpacalabsllc/studio
Architecture Studio control plane — initialize or inspect a studio workspace, create and register projects, or route an architecture/AEC task to the right agent or skill. Use when the user runs /as:studio, asks to set up or open their studio, manage its projects, or describes a task without naming a skill.
npx skills add https://github.com/AlpacaLabsLLC/skills-for-architects --skill studio
/as:studio has two jobs that share one boundary: it owns the studio workspace and routes architecture work. It never performs delegated domain work itself.
When the user invokes /as:studio with no arguments, begin with this exact mark in a plain-text fence. Do not omit, abbreviate, or paraphrase it:
█████╗ ██████╗ ██████╗██╗ ██╗ ███████╗████████╗██╗ ██╗██████╗ ██╗ ██████╗
██╔══██╗██╔══██╗██╔════╝██║ ██║ ██╔════╝╚══██╔══╝██║ ██║██╔══██╗██║██╔═══██╗
███████║██████╔╝██║ ███████║ ███████╗ ██║ ██║ ██║██║ ██║██║██║ ██║
██╔══██║██╔══██╗██║ ██╔══██║ ╚════██║ ██║ ██║ ██║██║ ██║██║██║ ██║
██║ ██║██║ ██║╚██████╗██║ ██║ ███████║ ██║ ╚██████╔╝██████╔╝██║╚██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝
Immediately below the mark show this compact provenance block verbatim:
Created by Federico Negro in 2026.
Author / owner: ALPA — https://alpa.llc (contact: [email protected])
Copyright: © 2026 Alpaca Design Lab LLC, MIT-licensed
Repo: github.com/AlpacaLabsLLC/skills-for-architects (the "skills-for-architects" marketplace)
The mark and provenance are part of the visible welcome, not background context. Never use Bash or another tool to print or display the welcome; shell output may be collapsed by the harness.
AskUserQuestion is available, its question field must begin with the exact mark above as raw text, without opening or closing Markdown fences. Immediately include the provenance block as raw text before How would you like to start?, and then present the four choices below. The structured gate must be self-contained; do not rely on a preceding assistant preamble because the harness may suppress it when the gate opens.AskUserQuestion is unavailable, the ordinary assistant response must begin with the same exact mark and provenance before asking once in natural language.Keep the rest light. If a studio is already resolved, offer to open its status or create a project. Otherwise explain that the built-in tools are already available and that studio setup adds persistent settings, projects, and records. Present these four outcomes in one structured gate:
/as:studio init; do not repeat the mark./as:tool-catalog and representative direct commands; and say, “Run /as:studio later whenever you want persistent settings and project records.”/as:learn.Tools-only use is not a stored mode. Built-in skills continue to run from the installed plugin, and the user can invoke /as:studio later without migration or cleanup. Never direct an ordinary user to download or copy the repository’s skills/ directory.
Never ask a setup or confirmation question twice. For the no-argument welcome, put the required branding and question together inside the structured gate as specified above. For later gates, give context or a preview without ending in a prose question, then open the structured gate immediately. The user’s answer to that gate is the answer; do not restate the question in chat. If the tool is unavailable, ask once in natural language. A later Claude Code permission prompt is a separate harness security boundary, not a reason to add another conversational confirmation.
/as:studio init
/as:studio status
/as:studio projects
/as:studio create-project
/as:studio register-project <project folder>
/as:studio archive-project <project id>
/as:studio updates status
/as:studio updates enable
/as:studio updates disable
/as:studio tasks mode project|portfolio
/as:studio <describe an architecture task>
STUDIO.md marks the studio root. Only /as:studio writes STUDIO.md.PROJECT.md marks a project root. Project facts and decision records belong to /as:project; /as:studio reads only enough project identity to register or verify it..mcp.json is the reserved connector manifest and is owned only by /as:studio. A project never receives or owns .mcp.json.PROJECT.md.projects/; never persist arbitrary absolute project paths.STUDIO.md; its parent is the studio root.PROJECT.md; its parent is the current project root.STUDIO.md is never a project marker and a PROJECT.md is never the studio manifest./as:studio init must not initialize there and create-project must target the studio’s projects/ directory./as:studio initSTUDIO.md is already resolved, show status instead of overwriting it.imperial, metric, or project-specific / mixed), and default jurisdiction (country, state/region, city). Permit No default for any jurisdiction level; never invent one from the machine location. Do not first ask for these values in prose.Yes, automatically check / Not now choices in the setup gate. Enabling permits at most one bare request per 24 hours to ALPA's Cloudflare endpoint; it sends no project content or Architecture Studio identifier, though Cloudflare processes ordinary request metadata such as IP address, headers, and timestamps. Ask the user to acknowledge this note as part of setup confirmation../.., absolute names supplied as names, separators inside names, control characters, reserved ambiguous names, existing files, and non-empty target directories.${CLAUDE_SKILL_DIR}/scripts/studio-workspace.sh init <target> <studio-name> <working-units> <country> <state-region> <city> with safely quoted arguments. Use the literal value No default for omitted jurisdiction levels. Only when the user selected enablement, run ${CLAUDE_SKILL_DIR}/scripts/update-preference.sh enable; Not now runs no preference command and does not disable a preference previously enabled elsewhere.STUDIO.md, CLAUDE.md, .mcp.json, .claude/skills/, and projects/, including the rendered units, jurisdiction, data-governance statement, and the exact empty connector shape { "mcpServers": {} }. This reserves a studio-only integration boundary; do not add a provider, URL, command, arguments, OAuth flow, or credentials. Finish by reporting the exact absolute studio path and .claude/skills/ path. Tell the user to restart Claude Code from the studio root if a newly created firm skill does not appear in autocomplete; after restart, invoke it by its local /{skill-name} command./as:studio create-project.The created structure is:
studio-root/
├── STUDIO.md
├── CLAUDE.md
├── .mcp.json
├── .claude/
│ └── skills/
└── projects/
/as:studio status and /as:studio projectsRead the nearest STUDIO.md, then inspect its relative registered paths. Report:
PROJECT.md;PROJECT.md but absent from the manifest;PROJECT.md identity.missing, empty-reserved, configured, or invalid.project, portfolio, or invalid, including whether the canonical register expected by that mode exists.These are read-only operations. Never silently add, remove, or rewrite a row or .mcp.json. Status must not attempt authentication, OAuth, network access, or connector startup.
/as:studio updates status|enable|disableUpdate checking is a global local preference, not a studio or project record. Resolve ${ARCHITECTURE_STUDIO_STATE_DIR:-$HOME/.claude} and use .architecture-studio-update-check-enabled as the sole permission marker. The stable state root is intentionally independent of the installed plugin identifier.
status: run ${CLAUDE_SKILL_DIR}/scripts/update-preference.sh status; it reports enabled or disabled without creating directories, files, caches, or network traffic.enable: explain the request and Cloudflare metadata boundary, then use one confirmation gate. After confirmation, run ${CLAUDE_SKILL_DIR}/scripts/update-preference.sh enable; it writes the marker with user-only permissions and removes any stale cache so the next session seeds silently without a request.disable: use one confirmation gate, then run ${CLAUDE_SKILL_DIR}/scripts/update-preference.sh disable. It removes the enablement marker and leaves the cache as inert local history. With no marker, the hook exits before filesystem or network work.Never enable checking from installation, ordinary /as:studio status, or inferred consent. Never describe endpoint traffic as anonymous users, daily active users, or zero metadata.
/as:studio tasks mode project|portfolioSTUDIO.md owns the portable task-storage choice. New studios default to project: each project owns TASKS.md. portfolio means one studio-root TASKS.md is canonical and every row carries a Project ID. The two modes are never simultaneously writable.
Task register setting. If the requested mode already matches, report it without mutation.${CLAUDE_SKILL_DIR}/scripts/studio-workspace.sh task-mode <studio-root> <project|portfolio>, then verify STUDIO.md and every expected register boundary./as:tasklist owns task rows and task operations. /as:studio owns only this storage-mode setting and the guarded empty-register transition.
/as:studio create-project/as:studio init or standalone /as:project init.{project-id}-{kebab-name} when an ID exists, otherwise {kebab-name}. Project facts are added later through /as:project; do not gather facts that this creation flow does not persist.STUDIO.md row. Wait for one affirmative confirmation covering both operations.Task register setting and require project or portfolio. Run the project-owned helper at ${CLAUDE_PLUGIN_ROOT}/skills/project/scripts/project-workspace.sh init <target> <name> <project-id> <task-mode>. In portfolio mode the project helper must not create a competing project-local TASKS.md. Do not slash-invoke /as:project init; that would route back here.PROJECT.md and verify the bundle.${CLAUDE_SKILL_DIR}/scripts/studio-workspace.sh register <studio-root> <id> <name> <relative-path>.STUDIO.md and the project bundle. If registration fails after project creation, keep the project intact, report the partial state, and offer registration of that exact folder. Never create another folder as recovery..claude/skills/ path. Tell the user that project-only skills created there are discovered from the project scope; if a new skill does not appear in autocomplete, restart Claude Code from that project root and invoke it by its local /{skill-name} command. Offer /as:project update as the next step for adding sourced project facts./as:studio register-project <folder>Accept only a descendant of the resolved studio’s projects/ directory containing PROJECT.md. Read its identity, detect duplicate ID/path rows, preview the relative row, confirm, register, and verify. Never relocate or copy client files.
/as:studio archive-project <id>Preview changing only the manifest registration state to archived, confirm, then use the helper and verify. Archiving does not change the project’s design phase, delete files, or move its folder.
If the input is not a studio-management command, classify and route it. Prefer the narrowest skill when the request names a concrete deliverable; use an agent when judgment or multiple skills are required.
| Request involves | Route |
|---|---|
| Studio/project setup, project facts, project decisions, “remember this” | /as:project (project creation inside a studio starts with /as:studio create-project) |
| Meeting transcript or minutes | /as:meeting-minutes |
| Field notes or site-visit report | /as:site-visit-report |
| Tasks or action register | /as:tasklist |
| Daily/weekly time reconstruction | /as:timetracker |
| Explicit work plan, sequence, coordination, delivery plan | /as:workplan |
| Bug report, broken skill, or feature request for Architecture Studio | /as:studio-feedback |
| Site context, feasibility, climate, transit, demographics, history | Site Planner agent |
| NYC property, zoning, FAR, envelope, permits, violations, landmarks | NYC Zoning Expert agent |
| Headcount, workplace program, occupancy, office sizing | Workplace Strategist agent |
| Products, materials, furniture search, alternatives | Product & Materials Researcher agent |
| FF&E schedules, room packages, SIF, schedule QA | FF&E Designer agent |
| EPD, GWP, embodied carbon, LEED materials | Sustainability Specialist agent |
| Presentations, slide decks, palettes, image preparation | Brand Manager agent |
| CSI specification writing without a sustainability focus | /as:spec-writer |
/as:workplan./as:tool-catalog./as:studio has no arguments, follow the branded welcome flow above; do not append the full task menu unless the user skips setup or asks what else is available./as:studio does not doPROJECT.md, decisions/, tasks, time, meetings, or reports..mcp.json in projects.Take alpacalabsllc/studio from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.