WORK-271
Setting up your dashboard 0 entities found · 9/32 branches scanned
ID:WORK-271Status:done

create-refrakt plan-site scaffold

Add a plan project type to create-refrakt that scaffolds a complete, runnable plan site: config (plugin + entityRoutes), a seed plan/, and a plan-site/ content dir (layout + dashboards), for a chosen adapter target.

Priority:mediumComplexity:moderateMilestone:v0.16.0Source:SPEC-071
claude/v0.16.0 View source

Criteria completion

Criteria completion: 5 of 5 (100%) checked; tracking started on May 26, no incremental history yet0%25%50%75%100%May 26Jun 15

Tracking started May 26 — check back for trends.

Branches 2
History 3
  1. bcfb682
    Created (done)by bjornolofandersson
  2. 99dfa62
    Content editedby Björn Andersson
    feat(create-refrakt): plan-site scaffold via --type plan --target (WORK-
  3. 7ab7615
    Content editedby Claude
    plan: add v0.16.0 milestone and work breakdown for SPEC-069/070/071

Acceptance Criteria

  • create-refrakt --type plan [--target <adapter>] scaffolds a runnable plan site
  • Generated refrakt.config.json includes @refrakt-md/plan plus the entityRoutes rules for spec/work/bug/decision/milestone
  • Seed plan/ (example spec + work + decision + milestone) so refrakt dev shows a populated site immediately
  • plan-site/ content dir ships _layout.md (docs layout + plan sidebar) and dashboard pages (index, by-status, milestones) using collection / backlog / plan-progress
  • Dependency versions derived from create-refrakt's own package.json at runtime, as other templates do

Dependencies

  • WORK-268 (entityRoutes adapter)
  • WORK-263 (collection rune)

References

  • SPEC-071

Resolution

Completed: 2026-05-26

Branch: claude/v0.16.0

What was done

  • packages/create-refrakt/src/bin.ts: --target is now accepted with --type plan (no longer rejected). When supplied, it dispatches to the new scaffoldPlanSite(); without a target the existing planning-only scaffoldPlan() stays untouched for back-compat. Help text + success copy updated for the new combination.
  • packages/create-refrakt/src/scaffold.ts: new scaffoldPlanSite({ projectName, targetDir, target }) that (1) lays down the adapter shell via the existing scaffold() for the chosen target, (2) overwrites refrakt.config.json with the plan-site shape — contentDir: ./plan-site, plugins: ['@refrakt-md/plan'], routeRulesdocs layout, and the entityRoutes block for spec/work/bug/decision/milestone, (3) merges @refrakt-md/plan + @refrakt-md/cli into package.json plus plan:* scripts, (4) seeds plan/ via runInit({ noPackageJson: true }), (5) writes plan-site/_layout.md + dashboard pages (index, work, specs, bugs, decisions, milestones). Versions are pinned to create-refrakt's own package.json via the existing getRefraktVersion() helper.
  • packages/create-refrakt/test/scaffold-plan-site.test.ts: new suite covering the runnable plan-site scaffold — file presence, config shape (contentDir, plugins, entityRoutes types, expand templates), package.json deps + scripts, version pinning, layout content, dashboard rune wiring, and the already-exists guard.
  • packages/create-refrakt/test/bin.test.ts: dropped the "rejects --type plan with --target" assertion (the combination is now valid) and added a help-text assertion for the new example.
  • Stale packages/create-refrakt/test/x/ (leftover template output) cleaned up.

Notes

  • --type plan without --target is unchanged: still planning-only (CLI + plan deps, no adapter, no plan-site/). This keeps the bracket-syntax in SPEC-071's acceptance criterion meaningful — supplying --target is what turns it into the runnable plan site.
  • The dashboard set mirrors WORK-272's hand-authored set for refrakt itself, so the scaffold output and the dogfood site stay in sync.
  • All 70 create-refrakt tests pass after the changes.