mcpbeat

Project

alpacalabsllc/project

Create or maintain an Architecture Studio project — initialize its record bundle, remember sourced facts, capture or supersede decisions, inspect project status, or migrate a 1.x PROJECT.md. Use when the user says “set up the project,” “remember this,” “we decided,” asks about project context, or runs /as:project.

6k tokens
context cost
the whole folder, loaded on every use
11
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
302
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/AlpacaLabsLLC/skills-for-architects --skill project

What comes with it

15 199 bytes besides the instruction
README.md
references/context-resolution.md
scripts/project-workspace.sh
scripts/resolve-context.sh
templates/CLAUDE.md
templates/PROJECT.md
templates/TASKS.md
templates/TIMELOG.md
templates/decision.md
templates/record-directory-README.md

The instruction itself

14 sections, as written by the author

/as:project — Project Setup and Memory

/as:project is the only project-memory interface. It owns current facts in PROJECT.md and durable reasoning in decisions/*.md without combining those record types or duplicating a decision index.

Commands

/as:project init
/as:project status
/as:project update
/as:project remember <information>
/as:project decisions
/as:project record-decision <choice>
/as:project supersede <number>
/as:project migrate

Hard boundaries

  • PROJECT.md contains sourced current facts. Decision identity, status, rationale, and history live only in decisions/*.md.
  • PROJECT.md links to decisions/ but has no Decisions table and never copies decision metadata.
  • Never write STUDIO.md. /as:studio alone owns the manifest.
  • Never create a nested project beneath an existing PROJECT.md.
  • Every durable mutation is previewed and requires affirmative confirmation.
  • Preserve malformed records. A parse failure means unknown, not absent or approved.
  • Use project-relative links; never persist machine-specific absolute paths.

Resolve the project root

Run ${CLAUDE_PLUGIN_ROOT}/skills/project/scripts/resolve-context.sh from the current or explicitly supplied directory and follow references/context-resolution.md. PROJECT.md is the only implicit project boundary. A nearer project inside a monorepo wins over outer repository metadata; typed-record directories, task/time files, Claude instructions, git roots, and the current directory never establish a project. Stop on invalid; use the validated picker for studio-picker; and never write before one exact project is resolved.

/as:project init

  • If the current path resolves an existing PROJECT.md, show status and do not create a nested project.
  • If a STUDIO.md is resolved, route creation to /as:studio create-project. Do not mutate the studio manifest and do not call back recursively after /as:studio has begun its confirmed orchestration.
  • Outside a studio, ask whether to initialize a studio or create a standalone project. Standalone creation requires explicit confirmation.
  • Gather the project name, optional ID, and exact target. Normalize the directory to lowercase kebab-case, prefixing a supplied ID. When no ID is supplied, use the folder slug as the stable local ID. Reject unsafe names, separators, dot segments, control characters, existing files, and non-empty directories. Never silently suffix a project identity.
  • Preview the exact path and full bundle. State that no git repository, ALPA account, or cloud service will be created.
  • After confirmation, run ${CLAUDE_PLUGIN_ROOT}/skills/project/scripts/project-workspace.sh init <target> <name> <project-id> project and verify every file and directory. Standalone projects always use a project-local task register; portfolio mode belongs to a studio.
  • Report the exact created path and .claude/skills/ extension path. Explain that Claude Code should be started or restarted from the intended project directory if new project-only skills are not visible.

/as:project status

Read PROJECT.md, scan decisions/*.md directly, and summarize known facts, record counts, decision statuses, open tasks, and recent dated records. If an owning STUDIO.md declares portfolio task mode, read open tasks for this Project ID from the studio-root register; otherwise read the project register. Report duplicate decision numbers or malformed files. Do not consult or create a decision index.

Facts: update and remember

Every fact has a value, source, and date. Update an existing fact in place; append only genuinely new facts to the correct section. Git or the file-sharing system preserves history.

For /as:project remember or a natural memory request:

  • Read the exact input and relevant project records.
  • Classify each item as fact-like, decision-like, or mixed:
  • fact-like states a current, sourceable project condition;
  • decision-like expresses a choice, selection, rejection, approval, or rationale;
  • mixed contains separable facts and choices.
  • Preview grouped destinations. Facts show the PROJECT.md section, value, source, and date. Decisions show the proposed decision record.
  • Ask which grouped changes to apply. Confirmation of a source record is not authorization to promote every candidate.
  • Write only selected items, then re-read and verify.

When importing a selected item from minutes or a site report, require its exact project-relative path and stable item label. Read it and preserve its epistemic status. Reported, discussed, interpreted, proposed, or uncertain content cannot silently become a verified fact.

Decisions

/as:project decisions

Discover decisions/*.md independently. Report number, title, status, and path for each parseable record, plus duplicate numbers, missing/unrecognized statuses, and malformed files. Filenames and files are canonical; no PROJECT.md table participates.

/as:project record-decision

  • Scan every decision filename. Allocate max parseable number + 1, zero-padded to four digits; never reuse a number because another record is malformed.
  • Capture one choice per record: context, at least two honestly stated options, status (proposed or decided), deciders, the call, consequences, and source links. Pull from conversation first and ask one grouped question only for missing pieces.
  • A proposed source item remains proposed unless the user affirmatively says the choice was made.
  • Preview the complete record and collision-free path. Wait for confirmation.
  • Write decisions/NNNN-slug.md, re-read it, and verify number, status, title, and backlinks. Do not update PROJECT.md with decision metadata.

/as:project supersede <number>

  • Resolve exactly one parseable decided record. Stop on missing, ambiguous, malformed, or already-superseded records.
  • Allocate a replacement normally. Preview the complete new record and the old record’s single status change together.
  • After confirmation, create and verify the replacement first; only then change the old status to superseded by NNNN and verify both cross-links.
  • On a later failure, preserve the verified replacement, report the exact partial state, and offer recovery against those records. Never allocate another replacement number for recovery.

/as:project migrate

Migration removes the legacy Decisions table only when it is lossless:

  • Read PROJECT.md and discover all decision files.
  • Parse every legacy table row conservatively and match it to exactly one decision file by number plus compatible identity/status.
  • Missing files, duplicate numbers, malformed rows, or status disagreements block mutation. Report exact rows and paths.
  • If every row is accounted for, preview replacing the entire legacy section/table with the stable decisions/ link while preserving all unrelated content byte-for-byte.
  • After confirmation, run the helper migration, re-read PROJECT.md, and verify the table is gone, the link exists, and all decision files are unchanged.
  • A project already using the link-only contract reports “already migrated” without mutation.

Typed record handoffs

  • Minutes and site reports may propose selected facts or decisions; /as:project re-reads and confirms them.
  • /as:workplan reads facts and decision files but writes only its plan.
  • /as:tasklist owns task rows in the canonical project or portfolio TASKS.md; /as:studio alone owns the studio task-mode setting; /as:timetracker owns TIMELOG.md.
  • Project registration state and archive belong to /as:studio, not /as:project.

Collaboration and harness boundary

These are plain local files shared however the project already is. This local plugin creates no ALPA account or server. Cross-skill invocation and structured questions are enhancements; when unavailable, preserve completed work and print the exact follow-up command.

How to use it

Copy the folder

Take alpacalabsllc/project from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

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.