Skip to main content

Light-touch, pragmatic, artifact-driven framework for AI-assisted software delivery

Project description

BEACON

Light-touch, pragmatic, artifact-driven framework for AI-assisted software delivery.

"Would I proudly sign my name to this?"

BEACON pairs a lifecycle discipline (SEED → DESIGN → BUILD → SHIP) with a permanent decision record (ADRs), a single roadmap, and a deliberately transient workspace. It complements Spec Kit — Spec Kit owns spec mechanics; BEACON owns the lifecycle around them. Each is installable and upgradeable independently.

Install

uvx --from git+https://github.com/darth-veitcher/beacon beacon init --here

That writes the BEACON skeleton into the current directory and wires up Claude Code integration. Re-running is safe — your edited files are preserved.

Commands

beacon init [--here] [--ai claude] [--language python|node]  # install into a project (idempotent)
beacon upgrade [--here]                   # refresh framework files only
beacon check [--here]                     # validate the install (files-present)
beacon doctor [--here] [--strict]         # semantic health check (placeholders, stale notes, ADR gaps, drift)
beacon integration list                   # list available integrations
beacon integration add <name> [--here]    # add an integration (e.g. `claude`, `release`)
beacon integration remove <name> [--here] # remove an integration
beacon --version  /  beacon -V            # show installed version

Languages

Phase guides and the CLAUDE.md fragment carry placeholders for quality-gate commands. At install time beacon init --language <name> substitutes the matching commands so a Node project sees bun run lint where a Python project sees uv run ruff. v0.5 ships python (default) and node; add more by dropping a TOML file at src/beacon/resources/languages/<name>.toml.

beacon init --language node     # → bun run lint; bunx tsc --noEmit; …
beacon init --language python   # → uv run ruff; uv run ty check; …  (default)

Integrations

beacon integration list shows what's available.

claude (installed by default)

Claude Code slash commands (/init, /git:*, /design:*) and the <!-- BEACON --> block in .claude/CLAUDE.md that briefs the agent on the lifecycle and on when to run beacon doctor. Re-run beacon integration add claude or beacon upgrade to refresh.

release — opt-in, production-ready release pipeline

beacon integration add release

Drops three things into your project:

File What it is
.github/workflows/release.yml Branch-based release: push to main → PyPI, push to develop → TestPyPI (pre-release). Framework-owned — overwritten on re-install.
PUBLISHING.md One-time PyPI/TestPyPI Trusted Publisher registration steps. User-seeded — never overwritten.
[tool.semantic_release] block in pyproject.toml python-semantic-release config wrapped in # ──── BEACON release integration ──── sentinels. If you already have a hand-authored PSR config, install warns and skips rather than clobber.

Worked example on a fresh project:

mkdir my-cli && cd my-cli
git init && git checkout -b main
# Minimal pyproject.toml so beacon can read project.name
cat > pyproject.toml <<'EOF'
[project]
name = "my-cli"
version = "0.1.0"
EOF

uvx --from beacon-framework beacon init --here
uvx --from beacon-framework beacon integration add release

# Result:
ls -la .github/workflows/release.yml PUBLISHING.md
grep -c "BEACON release integration" pyproject.toml   # → 2 (start + end sentinels)

After install you still need to do the one-time PyPI side (creating pending publishers + GitHub environments named pypi and testpypi); the installed PUBLISHING.md walks through it. Every push to main then ships a Conventional-Commit-derived version to PyPI; every push to develop ships an X.Y.Z-dev.N pre-release to TestPyPI.

beacon integration remove release cleanly reverses the install — deletes the workflow + the fenced PSR block, leaves PUBLISHING.md alone in case you've edited it.

Health checks

beacon check     # files-present validation (fast; matches the install manifest)
beacon doctor    # semantic health — placeholders, stale Work/sessions, ADR gaps, framework drift
beacon doctor --strict   # CI mode: promotes warnings to failures

Sample doctor output on a fresh install (problem statement not yet written):

✓ manifest: BEACON 0.3.0 installed.
✗ problem-statement: Placeholder text still in problem statement: [Replace with
   your problem statement], [Specific person, role, or team, … . Fill in
   00-problem-statement.md before opening a feature branch.
! roadmap: No Active Bullet line matching '**#N — title**' in Roadmap. Set one
   when starting a bullet.
✓ sessions: No stale session files.
✓ adr-coverage: No ADRs yet (no git history to weigh against).
✓ drift: Framework files match shipped resources.

ok=4  warn=1  fail=1

A FAIL exits non-zero (--strict does the same for warnings) so you can wire it into a pre-commit hook or CI gate.

What gets installed

project-management/
├── Background/
│   ├── 00-problem-statement.md           # seeded (you fill it in)
│   └── 01-final-architecture-document.md # seeded
├── ADRs/
│   ├── README.md                         # framework
│   └── ADR-000-template.md               # framework
├── Roadmap/
│   ├── README.md                         # seeded
│   └── archive/.gitkeep
├── Work/
│   ├── README.md                         # framework
│   └── sessions/  planning/  analysis/   # transient — delete after merge
└── .beacon/init-options.json             # manifest (pins version, lists files)
beacon.md                                 # seeded — 5-line progress dashboard
.claude/
├── CLAUDE.md                             # framework block delimited by <!-- BEACON ... --> markers
├── commands/
│   ├── init.md                           # framework — /init (SEED phase)
│   ├── git/{feature,pr,release}.md       # framework
│   └── design/{wardley,evaluate,diagram}.md   # framework
└── skills/                               # framework — phase guides (auto-activate on entry triggers)
    ├── beacon-seed/SKILL.md   beacon-design/SKILL.md
    └── beacon-build/SKILL.md  beacon-ship/SKILL.md

Migration from BEACON ≤ 0.3: phase prompts used to live in project-management/Prompts/0N-PHASE.md. They are now Claude Code skills under .claude/skills/beacon-*/. beacon upgrade removes the legacy directory automatically — see #9.

Framework files are overwritten on upgrade. Seeded files are written only if absent. The manifest in .beacon/init-options.json is the contract.

Atomicity

BEACON does not write to .specify/ and does not depend on Spec Kit being installed. Spec Kit does not write to project-management/. You can install, upgrade, or remove either framework without touching the other.

The only place where BEACON acknowledges Spec Kit is the /init slash command, which suggests /speckit.specify as the next step if .specify/ is present.

Documentation

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

beacon_framework-0.7.0.tar.gz (80.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

beacon_framework-0.7.0-py3-none-any.whl (87.1 kB view details)

Uploaded Python 3

File details

Details for the file beacon_framework-0.7.0.tar.gz.

File metadata

  • Download URL: beacon_framework-0.7.0.tar.gz
  • Upload date:
  • Size: 80.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for beacon_framework-0.7.0.tar.gz
Algorithm Hash digest
SHA256 53d6fa10e941cee8f0d54992a2155f7d7990de64c5374aca1c4da7cb9c976bf8
MD5 39a97792a26e7975591e4c0ad8740180
BLAKE2b-256 30a6dbf90bc46872bddef26cbb1b650215b430b719137c6d9216167ed38848df

See more details on using hashes here.

Provenance

The following attestation bundles were made for beacon_framework-0.7.0.tar.gz:

Publisher: release.yml on darth-veitcher/beacon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file beacon_framework-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for beacon_framework-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6a318f54691e9209584cd4dc290da422ad4af24dc15ec19b99d69f6ff7713a5
MD5 3471f72b49efbf47508a67b85b8893d7
BLAKE2b-256 c3698abe28caaef2336f01884ef7d22cd69a42a8c0110882ad838194be689393

See more details on using hashes here.

Provenance

The following attestation bundles were made for beacon_framework-0.7.0-py3-none-any.whl:

Publisher: release.yml on darth-veitcher/beacon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page