.github/skills/speckit-constitution/SKILL.md
Create or update project governing principles and development guidelines. Use at project start to establish code quality, testing standards, and architectural constraints that guide all development.
npx skillsauth add pradeepmouli/lspeasy speckit-constitutionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
You are updating the project constitution at .specify/memory/constitution.md. This file is a TEMPLATE containing placeholder tokens in square brackets (e.g. [PROJECT_NAME], [PRINCIPLE_1_NAME]). Your job is to (a) collect/derive concrete values, (b) fill the template precisely, and (c) propagate any amendments across dependent artifacts.
Note: If .specify/memory/constitution.md does not exist yet, it should have been initialized from .specify/templates/constitution-template.md during project setup. If it's missing, copy the template first.
Follow this execution flow:
Load the existing constitution at .specify/memory/constitution.md.
[ALL_CAPS_IDENTIFIER].
IMPORTANT: The user might require less or more principles than the ones used in the template. If a number is specified, respect that - follow the general template. You will update the doc accordingly.Collect/derive values for placeholders:
RATIFICATION_DATE is the original adoption date (if unknown ask or mark TODO), LAST_AMENDED_DATE is today if changes are made, otherwise keep previous.CONSTITUTION_VERSION must increment according to semantic versioning rules:
Draft the updated constitution content:
Consistency propagation checklist (convert prior checklist into active validations):
.specify/templates/plan-template.md and ensure any "Constitution Check" or rules align with updated principles..specify/templates/spec-template.md for scope/requirements alignment—update if constitution adds/removes mandatory sections or constraints..specify/templates/tasks-template.md and ensure task categorization reflects new or removed principle-driven task types (e.g., observability, versioning, testing discipline)..specify/templates/commands/*.md (including this one) to verify no outdated references (agent-specific names like CLAUDE only) remain when generic guidance is required.README.md, docs/quickstart.md, or agent-specific guidance files if present). Update references to principles changed.Produce a Sync Impact Report (prepend as an HTML comment at top of the constitution file after update):
Validation before final output:
Write the completed constitution back to .specify/memory/constitution.md (overwrite).
Output a final summary to the user with:
docs: amend constitution to vX.Y.Z (principle additions + governance update)).Formatting & Style Requirements:
If the user supplies partial updates (e.g., only one principle revision), still perform validation and version decision steps.
If critical info missing (e.g., ratification date truly unknown), insert TODO(<FIELD_NAME>): explanation and include in the Sync Impact Report under deferred items.
Do not create a new template; always operate on the existing .specify/memory/constitution.md file.
tools
`@lspeasy/cli` — programmatic entry point. Exposes the reusable refactor internals (session pipeline + WorkspaceEdit applier) so the same machinery can be embedded in scripts, not just invoked through the `lspeasy` bin. Also: lsp, language-server-protocol, refactor, rename, codemod, move-symbol, cli.
tools
API reference for cli
tools
Use for ANY rename, file-move, or move-symbol refactor — especially rename-heavy work across multiple files. Claude Code's built-in LSP tool is READ-ONLY (find references, but no rename / file-move / move-symbol). Hand-editing those refactors silently misses re-exports, aliased imports, type-only imports, and {@link} doc references. This skill drives a real language server via the `lspeasy` CLI to apply a correct WorkspaceEdit that catches every reference. Trigger when the user asks to rename a function/class/variable/type project-wide, move a file and fix its importers, or pull a symbol out into another module.
tools
Use when working with lspeasy (client, core, server).