Skip to content

[Extension]: Add Charter #3322

Description

@Huljo

Extension ID

charter

Extension Name

Charter

Version

v0.3.1

Description

Compose modular project constitutions from shared fragment registries.
Centralize governance rules, select per-project fragments, track upstream changes, and keep multi-project setups consistent.

Author

Fyloss

Repository URL

https://github.com/Fyloss/spec-kit-charter

Download URL

https://github.com/Fyloss/spec-kit-charter/archive/refs/tags/v0.3.1.zip

License

MIT

Homepage (optional)

https://github.com/Fyloss/spec-kit-charter

Documentation URL (optional)

https://github.com/Fyloss/spec-kit-charter/tree/master/docs

Changelog URL (optional)

https://github.com/Fyloss/spec-kit-charter/blob/master/CHANGELOG.md

Required Spec Kit Version

=0.11.9

Required Tools (optional)

Number of Commands

5

Number of Hooks (optional)

1

Tags

constitution, governance, modular, fragments, registry

Key Features

  • Centralize shared rules as reusable fragments in a registry (local directory or git repo)
  • Select fragments per project: mandatory, recommended, and optional
  • Compose a final constitution by assembling selected fragments + project-specific rules
  • Track changes: detect when fragments are modified locally vs. updated in the registry
  • Support monorepos: sub-constitutions scope rules to specific packages

Testing Checklist

  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project

Submission Requirements

  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)

Testing Details

Tested on:

  • macOS 26 with Spec Kit v0.12.0
  • Linux Ubuntu 24 with Spec Kit v0.12.0

Test project: local basic NextJs app (front + back)

Test scenarios:

  1. Installed extension
specify extension add charter --from https://github.com/Fyloss/spec-kit-charter/archive/refs/tags/v0.3.1.zip
  1. Configured settings
/speckit.charter.config
  • Pick a registry location
  • Select constitution fragments

Output: Generated config.yml + state.yml files in .specify/charter

  1. Run composition
    /speckit.charter.compose
    Output: new .specify/memory/constitution.md file with selected fragments (using /speckit.constitution command to preserve compatibility with Spec kit hooks and metadata)

  2. Verified outputs
    .specify/memory/constitution.md now have all selected fragments.

Example Usage

#### 1. Set Up a Registry

Create a fragment registry (local directory or git repo):


.charter/
├── manifest.yml
├── fragments/
│   ├── global/
│   │   ├── compliance.md
│   │   └── code-quality.md
│   └── languages/
│       └── typescript/
│           └── standards.md
└── sub-constitutions/
    ├── package-auth.md
    └── package-api.md


Create `manifest.yml`:


version: 1
name: "My Organization Charter Registry"
mandatory_fragments:
  - "global/compliance"
recommended_fragments:
  - "global/code-quality"


You can skip step 2 entirely. If no configuration exists yet, running
`/speckit.charter.compose` directly will perform the configuration inline:

#### Compose the constitution (express mode)

/speckit.charter.compose


The combined flow:

1. **Asks for the registry value** (proposing the current/default `.charter`) —
   first input
2. Shows the fragment list and asks for your **selection** — second input
3. Displays the composition summary (no confirmation prompt)
4. Proceeds automatically to generate the constitution

### Other commands

| Command | Description |
|---------|-------------|
| `/speckit.charter.compose update` | Update all fragments from registry |
| `/speckit.charter.compose update <name>` | Update a single fragment |
| `/speckit.charter.add <name>` | Add a new fragment from the registry |
| `/speckit.charter.remove <name>` | Remove a fragment from the composition |
| `/speckit.charter.restore` | Restore constitution to last backup |

Proposed Catalog Entry

{
  "charter": {
    "name": "Charter",
    "id": "charter",
    "description": "Constitution Composer from shared fragment registries",
    "author": "Fyloss",
    "version": "0.3.1",
    "download_url": "https://github.com/Fyloss/spec-kit-charter/archive/refs/tags/v0.3.1.zip",
    "repository": "https://github.com/Fyloss/spec-kit-charter",
    "homepage": "https://github.com/Fyloss/spec-kit-charter",
    "license": "MIT",
    "requires": {
      "speckit_version": ">=0.11.9"
    },
    "provides": {
      "commands": 5
    },
    "tags": ["constitution", "governance", "modular", "fragments", "registry"],
    "verified": false,
    "downloads": 10,
    "stars": 2,
    "created_at": "2026-07-01T00:00:00Z",
    "updated_at": "2026-07-03T04:00:00Z"
  }
}

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions