light-plan 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +3181 -2
- package/assets/README.md +111 -0
- package/assets/agents/lpm-developer.md +468 -0
- package/assets/agents/lpm-planner.md +532 -0
- package/assets/harnesses/claude.yml +43 -0
- package/assets/harnesses/copilot.yml +54 -0
- package/assets/harnesses/reasonix.yml +49 -0
- package/assets/hcm/light-plan.yml +45 -0
- package/assets/skills/lpm-board-health.md +243 -0
- package/assets/skills/lpm-board-setup.md +354 -0
- package/assets/skills/lpm-delivery.md +344 -0
- package/assets/skills/lpm-planning.md +411 -0
- package/assets/skills/lpm-templates.md +144 -0
- package/assets/skills/lpm.md +267 -0
- package/dist/cli/agent-view.d.ts +27 -0
- package/dist/cli/agent-view.js +247 -0
- package/dist/cli/agent-view.js.map +1 -0
- package/dist/cli/commands/agent/assets.d.ts +64 -0
- package/dist/cli/commands/agent/assets.js +106 -0
- package/dist/cli/commands/agent/assets.js.map +1 -0
- package/dist/cli/commands/agent/glob.d.ts +25 -0
- package/dist/cli/commands/agent/glob.js +82 -0
- package/dist/cli/commands/agent/glob.js.map +1 -0
- package/dist/cli/commands/agent/index.d.ts +11 -0
- package/dist/cli/commands/agent/index.js +284 -0
- package/dist/cli/commands/agent/index.js.map +1 -0
- package/dist/cli/commands/agent/install.d.ts +59 -0
- package/dist/cli/commands/agent/install.js +131 -0
- package/dist/cli/commands/agent/install.js.map +1 -0
- package/dist/cli/commands/agent/mapping.d.ts +175 -0
- package/dist/cli/commands/agent/mapping.js +256 -0
- package/dist/cli/commands/agent/mapping.js.map +1 -0
- package/dist/cli/commands/check.d.ts +2 -0
- package/dist/cli/commands/check.js +81 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/comment.d.ts +2 -0
- package/dist/cli/commands/comment.js +104 -0
- package/dist/cli/commands/comment.js.map +1 -0
- package/dist/cli/commands/convert.d.ts +2 -0
- package/dist/cli/commands/convert.js +115 -0
- package/dist/cli/commands/convert.js.map +1 -0
- package/dist/cli/commands/copy.d.ts +2 -0
- package/dist/cli/commands/copy.js +69 -0
- package/dist/cli/commands/copy.js.map +1 -0
- package/dist/cli/commands/export.d.ts +11 -0
- package/dist/cli/commands/export.js +226 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/flag.d.ts +2 -0
- package/dist/cli/commands/flag.js +172 -0
- package/dist/cli/commands/flag.js.map +1 -0
- package/dist/cli/commands/git.d.ts +11 -0
- package/dist/cli/commands/git.js +357 -0
- package/dist/cli/commands/git.js.map +1 -0
- package/dist/cli/commands/hcm/bundle.d.ts +60 -0
- package/dist/cli/commands/hcm/bundle.js +166 -0
- package/dist/cli/commands/hcm/bundle.js.map +1 -0
- package/dist/cli/commands/hcm/index.d.ts +11 -0
- package/dist/cli/commands/hcm/index.js +162 -0
- package/dist/cli/commands/hcm/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.js +81 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/insert.d.ts +2 -0
- package/dist/cli/commands/insert.js +70 -0
- package/dist/cli/commands/insert.js.map +1 -0
- package/dist/cli/commands/instructions.d.ts +7 -0
- package/dist/cli/commands/instructions.js +256 -0
- package/dist/cli/commands/instructions.js.map +1 -0
- package/dist/cli/commands/link.d.ts +2 -0
- package/dist/cli/commands/link.js +121 -0
- package/dist/cli/commands/link.js.map +1 -0
- package/dist/cli/commands/mcp/config.d.ts +71 -0
- package/dist/cli/commands/mcp/config.js +119 -0
- package/dist/cli/commands/mcp/config.js.map +1 -0
- package/dist/cli/commands/mcp/index.d.ts +9 -0
- package/dist/cli/commands/mcp/index.js +92 -0
- package/dist/cli/commands/mcp/index.js.map +1 -0
- package/dist/cli/commands/mcp/serve.d.ts +1 -0
- package/dist/cli/commands/mcp/serve.js +76 -0
- package/dist/cli/commands/mcp/serve.js.map +1 -0
- package/dist/cli/commands/mcp/setup.d.ts +1 -0
- package/dist/cli/commands/mcp/setup.js +83 -0
- package/dist/cli/commands/mcp/setup.js.map +1 -0
- package/dist/cli/commands/me.d.ts +2 -0
- package/dist/cli/commands/me.js +85 -0
- package/dist/cli/commands/me.js.map +1 -0
- package/dist/cli/commands/move.d.ts +2 -0
- package/dist/cli/commands/move.js +81 -0
- package/dist/cli/commands/move.js.map +1 -0
- package/dist/cli/commands/new.d.ts +2 -0
- package/dist/cli/commands/new.js +222 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/commands/open.d.ts +2 -0
- package/dist/cli/commands/open.js +43 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/period.d.ts +10 -0
- package/dist/cli/commands/period.js +165 -0
- package/dist/cli/commands/period.js.map +1 -0
- package/dist/cli/commands/profile.d.ts +2 -0
- package/dist/cli/commands/profile.js +133 -0
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/queue.d.ts +2 -0
- package/dist/cli/commands/queue.js +582 -0
- package/dist/cli/commands/queue.js.map +1 -0
- package/dist/cli/commands/remote.d.ts +10 -0
- package/dist/cli/commands/remote.js +3142 -0
- package/dist/cli/commands/remote.js.map +1 -0
- package/dist/cli/commands/rm.d.ts +2 -0
- package/dist/cli/commands/rm.js +63 -0
- package/dist/cli/commands/rm.js.map +1 -0
- package/dist/cli/commands/set.d.ts +2 -0
- package/dist/cli/commands/set.js +139 -0
- package/dist/cli/commands/set.js.map +1 -0
- package/dist/cli/commands/split.d.ts +2 -0
- package/dist/cli/commands/split.js +90 -0
- package/dist/cli/commands/split.js.map +1 -0
- package/dist/cli/commands/task.d.ts +2 -0
- package/dist/cli/commands/task.js +298 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/team.d.ts +2 -0
- package/dist/cli/commands/team.js +114 -0
- package/dist/cli/commands/team.js.map +1 -0
- package/dist/cli/commands/template.d.ts +2 -0
- package/dist/cli/commands/template.js +338 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +2 -0
- package/dist/cli/commands/ui.js +98 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/upstream.d.ts +2 -0
- package/dist/cli/commands/upstream.js +218 -0
- package/dist/cli/commands/upstream.js.map +1 -0
- package/dist/cli/context.d.ts +24 -0
- package/dist/cli/context.js +52 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +208 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/live.d.ts +71 -0
- package/dist/cli/live.js +182 -0
- package/dist/cli/live.js.map +1 -0
- package/dist/cli/plan.d.ts +28 -0
- package/dist/cli/plan.js +76 -0
- package/dist/cli/plan.js.map +1 -0
- package/dist/cli/prompt.d.ts +60 -0
- package/dist/cli/prompt.js +185 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/ui.d.ts +65 -0
- package/dist/cli/ui.js +79 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/core/board/dependency-rollup.d.ts +54 -0
- package/dist/core/board/dependency-rollup.js +72 -0
- package/dist/core/board/dependency-rollup.js.map +1 -0
- package/dist/core/board/flag-rollup.d.ts +33 -0
- package/dist/core/board/flag-rollup.js +56 -0
- package/dist/core/board/flag-rollup.js.map +1 -0
- package/dist/core/board/index.d.ts +21 -0
- package/dist/core/board/index.js +22 -0
- package/dist/core/board/index.js.map +1 -0
- package/dist/core/board/load/cache.d.ts +52 -0
- package/dist/core/board/load/cache.js +105 -0
- package/dist/core/board/load/cache.js.map +1 -0
- package/dist/core/board/load/fields.d.ts +33 -0
- package/dist/core/board/load/fields.js +154 -0
- package/dist/core/board/load/fields.js.map +1 -0
- package/dist/core/board/load/scan.d.ts +39 -0
- package/dist/core/board/load/scan.js +88 -0
- package/dist/core/board/load/scan.js.map +1 -0
- package/dist/core/board/load/tree.d.ts +10 -0
- package/dist/core/board/load/tree.js +114 -0
- package/dist/core/board/load/tree.js.map +1 -0
- package/dist/core/board/load.d.ts +69 -0
- package/dist/core/board/load.js +204 -0
- package/dist/core/board/load.js.map +1 -0
- package/dist/core/board/query.d.ts +126 -0
- package/dist/core/board/query.js +291 -0
- package/dist/core/board/query.js.map +1 -0
- package/dist/core/board/registry.d.ts +51 -0
- package/dist/core/board/registry.js +98 -0
- package/dist/core/board/registry.js.map +1 -0
- package/dist/core/board/remote-scopes.d.ts +71 -0
- package/dist/core/board/remote-scopes.js +103 -0
- package/dist/core/board/remote-scopes.js.map +1 -0
- package/dist/core/board/rollup.d.ts +32 -0
- package/dist/core/board/rollup.js +67 -0
- package/dist/core/board/rollup.js.map +1 -0
- package/dist/core/board/scope.d.ts +81 -0
- package/dist/core/board/scope.js +134 -0
- package/dist/core/board/scope.js.map +1 -0
- package/dist/core/board/simulate.d.ts +138 -0
- package/dist/core/board/simulate.js +141 -0
- package/dist/core/board/simulate.js.map +1 -0
- package/dist/core/board/tasks/index.d.ts +25 -0
- package/dist/core/board/tasks/index.js +26 -0
- package/dist/core/board/tasks/index.js.map +1 -0
- package/dist/core/board/tasks/ranking.d.ts +155 -0
- package/dist/core/board/tasks/ranking.js +374 -0
- package/dist/core/board/tasks/ranking.js.map +1 -0
- package/dist/core/board/tasks/roster.d.ts +42 -0
- package/dist/core/board/tasks/roster.js +82 -0
- package/dist/core/board/tasks/roster.js.map +1 -0
- package/dist/core/board/tasks.d.ts +1 -0
- package/dist/core/board/tasks.js +2 -0
- package/dist/core/board/tasks.js.map +1 -0
- package/dist/core/config/index.d.ts +9 -0
- package/dist/core/config/index.js +10 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/lookup.d.ts +114 -0
- package/dist/core/config/lookup.js +221 -0
- package/dist/core/config/lookup.js.map +1 -0
- package/dist/core/config/remote-blocks.d.ts +17 -0
- package/dist/core/config/remote-blocks.js +47 -0
- package/dist/core/config/remote-blocks.js.map +1 -0
- package/dist/core/config/schema.d.ts +10 -0
- package/dist/core/config/schema.js +451 -0
- package/dist/core/config/schema.js.map +1 -0
- package/dist/core/errors.d.ts +23 -0
- package/dist/core/errors.js +31 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/gitsync/hosts.d.ts +40 -0
- package/dist/core/gitsync/hosts.js +115 -0
- package/dist/core/gitsync/hosts.js.map +1 -0
- package/dist/core/gitsync/index.d.ts +25 -0
- package/dist/core/gitsync/index.js +25 -0
- package/dist/core/gitsync/index.js.map +1 -0
- package/dist/core/gitsync/integrate.d.ts +72 -0
- package/dist/core/gitsync/integrate.js +115 -0
- package/dist/core/gitsync/integrate.js.map +1 -0
- package/dist/core/gitsync/repo.d.ts +61 -0
- package/dist/core/gitsync/repo.js +213 -0
- package/dist/core/gitsync/repo.js.map +1 -0
- package/dist/core/gitsync/run.d.ts +58 -0
- package/dist/core/gitsync/run.js +102 -0
- package/dist/core/gitsync/run.js.map +1 -0
- package/dist/core/gitsync/status.d.ts +59 -0
- package/dist/core/gitsync/status.js +81 -0
- package/dist/core/gitsync/status.js.map +1 -0
- package/dist/core/gitsync/sync.d.ts +111 -0
- package/dist/core/gitsync/sync.js +275 -0
- package/dist/core/gitsync/sync.js.map +1 -0
- package/dist/core/index.d.ts +31 -0
- package/dist/core/index.js +32 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/instructions/analyze.d.ts +70 -0
- package/dist/core/instructions/analyze.js +275 -0
- package/dist/core/instructions/analyze.js.map +1 -0
- package/dist/core/instructions/builtin.d.ts +21 -0
- package/dist/core/instructions/builtin.js +133 -0
- package/dist/core/instructions/builtin.js.map +1 -0
- package/dist/core/instructions/context.d.ts +155 -0
- package/dist/core/instructions/context.js +209 -0
- package/dist/core/instructions/context.js.map +1 -0
- package/dist/core/instructions/index.d.ts +29 -0
- package/dist/core/instructions/index.js +30 -0
- package/dist/core/instructions/index.js.map +1 -0
- package/dist/core/instructions/instructions.d.ts +90 -0
- package/dist/core/instructions/instructions.js +179 -0
- package/dist/core/instructions/instructions.js.map +1 -0
- package/dist/core/instructions/template.d.ts +108 -0
- package/dist/core/instructions/template.js +252 -0
- package/dist/core/instructions/template.js.map +1 -0
- package/dist/core/model/attributes.d.ts +16 -0
- package/dist/core/model/attributes.js +119 -0
- package/dist/core/model/attributes.js.map +1 -0
- package/dist/core/model/index.d.ts +10 -0
- package/dist/core/model/index.js +11 -0
- package/dist/core/model/index.js.map +1 -0
- package/dist/core/model/links.d.ts +34 -0
- package/dist/core/model/links.js +114 -0
- package/dist/core/model/links.js.map +1 -0
- package/dist/core/model/profile.d.ts +31 -0
- package/dist/core/model/profile.js +8 -0
- package/dist/core/model/profile.js.map +1 -0
- package/dist/core/model/types.d.ts +441 -0
- package/dist/core/model/types.js +167 -0
- package/dist/core/model/types.js.map +1 -0
- package/dist/core/model/zod.d.ts +6 -0
- package/dist/core/model/zod.js +11 -0
- package/dist/core/model/zod.js.map +1 -0
- package/dist/core/operations/board-index.d.ts +45 -0
- package/dist/core/operations/board-index.js +147 -0
- package/dist/core/operations/board-index.js.map +1 -0
- package/dist/core/operations/claim.d.ts +69 -0
- package/dist/core/operations/claim.js +115 -0
- package/dist/core/operations/claim.js.map +1 -0
- package/dist/core/operations/comment.d.ts +30 -0
- package/dist/core/operations/comment.js +46 -0
- package/dist/core/operations/comment.js.map +1 -0
- package/dist/core/operations/create.d.ts +82 -0
- package/dist/core/operations/create.js +306 -0
- package/dist/core/operations/create.js.map +1 -0
- package/dist/core/operations/flag.d.ts +58 -0
- package/dist/core/operations/flag.js +95 -0
- package/dist/core/operations/flag.js.map +1 -0
- package/dist/core/operations/git-sync.d.ts +148 -0
- package/dist/core/operations/git-sync.js +341 -0
- package/dist/core/operations/git-sync.js.map +1 -0
- package/dist/core/operations/index.d.ts +44 -0
- package/dist/core/operations/index.js +45 -0
- package/dist/core/operations/index.js.map +1 -0
- package/dist/core/operations/init.d.ts +25 -0
- package/dist/core/operations/init.js +122 -0
- package/dist/core/operations/init.js.map +1 -0
- package/dist/core/operations/link.d.ts +40 -0
- package/dist/core/operations/link.js +131 -0
- package/dist/core/operations/link.js.map +1 -0
- package/dist/core/operations/move.d.ts +43 -0
- package/dist/core/operations/move.js +103 -0
- package/dist/core/operations/move.js.map +1 -0
- package/dist/core/operations/profile.d.ts +23 -0
- package/dist/core/operations/profile.js +26 -0
- package/dist/core/operations/profile.js.map +1 -0
- package/dist/core/operations/remotes-off.d.ts +12 -0
- package/dist/core/operations/remotes-off.js +67 -0
- package/dist/core/operations/remotes-off.js.map +1 -0
- package/dist/core/operations/remove.d.ts +18 -0
- package/dist/core/operations/remove.js +114 -0
- package/dist/core/operations/remove.js.map +1 -0
- package/dist/core/operations/retype.d.ts +25 -0
- package/dist/core/operations/retype.js +59 -0
- package/dist/core/operations/retype.js.map +1 -0
- package/dist/core/operations/rollup.d.ts +74 -0
- package/dist/core/operations/rollup.js +121 -0
- package/dist/core/operations/rollup.js.map +1 -0
- package/dist/core/operations/shared.d.ts +133 -0
- package/dist/core/operations/shared.js +383 -0
- package/dist/core/operations/shared.js.map +1 -0
- package/dist/core/operations/update.d.ts +43 -0
- package/dist/core/operations/update.js +161 -0
- package/dist/core/operations/update.js.map +1 -0
- package/dist/core/operations/user.d.ts +27 -0
- package/dist/core/operations/user.js +68 -0
- package/dist/core/operations/user.js.map +1 -0
- package/dist/core/profile/current.d.ts +35 -0
- package/dist/core/profile/current.js +31 -0
- package/dist/core/profile/current.js.map +1 -0
- package/dist/core/profile/index.d.ts +14 -0
- package/dist/core/profile/index.js +15 -0
- package/dist/core/profile/index.js.map +1 -0
- package/dist/core/profile/schema.d.ts +9 -0
- package/dist/core/profile/schema.js +100 -0
- package/dist/core/profile/schema.js.map +1 -0
- package/dist/core/storage/activity.d.ts +78 -0
- package/dist/core/storage/activity.js +131 -0
- package/dist/core/storage/activity.js.map +1 -0
- package/dist/core/storage/atomic.d.ts +34 -0
- package/dist/core/storage/atomic.js +117 -0
- package/dist/core/storage/atomic.js.map +1 -0
- package/dist/core/storage/comments.d.ts +39 -0
- package/dist/core/storage/comments.js +88 -0
- package/dist/core/storage/comments.js.map +1 -0
- package/dist/core/storage/document.d.ts +16 -0
- package/dist/core/storage/document.js +98 -0
- package/dist/core/storage/document.js.map +1 -0
- package/dist/core/storage/frontmatter.d.ts +16 -0
- package/dist/core/storage/frontmatter.js +33 -0
- package/dist/core/storage/frontmatter.js.map +1 -0
- package/dist/core/storage/git.d.ts +8 -0
- package/dist/core/storage/git.js +48 -0
- package/dist/core/storage/git.js.map +1 -0
- package/dist/core/storage/index.d.ts +27 -0
- package/dist/core/storage/index.js +28 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/storage/local.d.ts +57 -0
- package/dist/core/storage/local.js +133 -0
- package/dist/core/storage/local.js.map +1 -0
- package/dist/core/storage/lock.d.ts +85 -0
- package/dist/core/storage/lock.js +364 -0
- package/dist/core/storage/lock.js.map +1 -0
- package/dist/core/storage/paths.d.ts +125 -0
- package/dist/core/storage/paths.js +202 -0
- package/dist/core/storage/paths.js.map +1 -0
- package/dist/core/storage/state.d.ts +32 -0
- package/dist/core/storage/state.js +71 -0
- package/dist/core/storage/state.js.map +1 -0
- package/dist/core/storage/templates.d.ts +29 -0
- package/dist/core/storage/templates.js +62 -0
- package/dist/core/storage/templates.js.map +1 -0
- package/dist/core/storage/views.d.ts +18 -0
- package/dist/core/storage/views.js +62 -0
- package/dist/core/storage/views.js.map +1 -0
- package/dist/core/validation/check.d.ts +4 -0
- package/dist/core/validation/check.js +22 -0
- package/dist/core/validation/check.js.map +1 -0
- package/dist/core/validation/checks/collection.d.ts +4 -0
- package/dist/core/validation/checks/collection.js +152 -0
- package/dist/core/validation/checks/collection.js.map +1 -0
- package/dist/core/validation/checks/counters.d.ts +3 -0
- package/dist/core/validation/checks/counters.js +23 -0
- package/dist/core/validation/checks/counters.js.map +1 -0
- package/dist/core/validation/checks/dependencies.d.ts +3 -0
- package/dist/core/validation/checks/dependencies.js +58 -0
- package/dist/core/validation/checks/dependencies.js.map +1 -0
- package/dist/core/validation/checks/gitignore.d.ts +10 -0
- package/dist/core/validation/checks/gitignore.js +22 -0
- package/dist/core/validation/checks/gitignore.js.map +1 -0
- package/dist/core/validation/checks/index-file.d.ts +8 -0
- package/dist/core/validation/checks/index-file.js +26 -0
- package/dist/core/validation/checks/index-file.js.map +1 -0
- package/dist/core/validation/checks/index.d.ts +20 -0
- package/dist/core/validation/checks/index.js +21 -0
- package/dist/core/validation/checks/index.js.map +1 -0
- package/dist/core/validation/checks/issues.d.ts +3 -0
- package/dist/core/validation/checks/issues.js +152 -0
- package/dist/core/validation/checks/issues.js.map +1 -0
- package/dist/core/validation/checks/periods.d.ts +3 -0
- package/dist/core/validation/checks/periods.js +89 -0
- package/dist/core/validation/checks/periods.js.map +1 -0
- package/dist/core/validation/checks/remotes.d.ts +20 -0
- package/dist/core/validation/checks/remotes.js +42 -0
- package/dist/core/validation/checks/remotes.js.map +1 -0
- package/dist/core/validation/checks/resources.d.ts +3 -0
- package/dist/core/validation/checks/resources.js +77 -0
- package/dist/core/validation/checks/resources.js.map +1 -0
- package/dist/core/validation/checks/rollup.d.ts +27 -0
- package/dist/core/validation/checks/rollup.js +53 -0
- package/dist/core/validation/checks/rollup.js.map +1 -0
- package/dist/core/validation/checks/squads.d.ts +3 -0
- package/dist/core/validation/checks/squads.js +42 -0
- package/dist/core/validation/checks/squads.js.map +1 -0
- package/dist/core/validation/checks/templates.d.ts +14 -0
- package/dist/core/validation/checks/templates.js +119 -0
- package/dist/core/validation/checks/templates.js.map +1 -0
- package/dist/core/validation/fix.d.ts +7 -0
- package/dist/core/validation/fix.js +273 -0
- package/dist/core/validation/fix.js.map +1 -0
- package/dist/core/validation/index.d.ts +7 -0
- package/dist/core/validation/index.js +8 -0
- package/dist/core/validation/index.js.map +1 -0
- package/dist/core/validation/shared.d.ts +47 -0
- package/dist/core/validation/shared.js +66 -0
- package/dist/core/validation/shared.js.map +1 -0
- package/dist/mcp/context.d.ts +70 -0
- package/dist/mcp/context.js +110 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/index.d.ts +49 -0
- package/dist/mcp/index.js +90 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/reply.d.ts +28 -0
- package/dist/mcp/reply.js +34 -0
- package/dist/mcp/reply.js.map +1 -0
- package/dist/mcp/tools/plan/create.d.ts +3 -0
- package/dist/mcp/tools/plan/create.js +128 -0
- package/dist/mcp/tools/plan/create.js.map +1 -0
- package/dist/mcp/tools/plan/delete.d.ts +3 -0
- package/dist/mcp/tools/plan/delete.js +35 -0
- package/dist/mcp/tools/plan/delete.js.map +1 -0
- package/dist/mcp/tools/plan/graph.d.ts +3 -0
- package/dist/mcp/tools/plan/graph.js +53 -0
- package/dist/mcp/tools/plan/graph.js.map +1 -0
- package/dist/mcp/tools/plan/index.d.ts +15 -0
- package/dist/mcp/tools/plan/index.js +16 -0
- package/dist/mcp/tools/plan/index.js.map +1 -0
- package/dist/mcp/tools/plan/link.d.ts +3 -0
- package/dist/mcp/tools/plan/link.js +46 -0
- package/dist/mcp/tools/plan/link.js.map +1 -0
- package/dist/mcp/tools/plan/registrar.d.ts +10 -0
- package/dist/mcp/tools/plan/registrar.js +24 -0
- package/dist/mcp/tools/plan/registrar.js.map +1 -0
- package/dist/mcp/tools/plan/reshape.d.ts +3 -0
- package/dist/mcp/tools/plan/reshape.js +95 -0
- package/dist/mcp/tools/plan/reshape.js.map +1 -0
- package/dist/mcp/tools/plan/timeline.d.ts +3 -0
- package/dist/mcp/tools/plan/timeline.js +68 -0
- package/dist/mcp/tools/plan/timeline.js.map +1 -0
- package/dist/mcp/tools/plan/upstream.d.ts +14 -0
- package/dist/mcp/tools/plan/upstream.js +69 -0
- package/dist/mcp/tools/plan/upstream.js.map +1 -0
- package/dist/mcp/tools/plan.d.ts +1 -0
- package/dist/mcp/tools/plan.js +2 -0
- package/dist/mcp/tools/plan.js.map +1 -0
- package/dist/mcp/tools/read.d.ts +3 -0
- package/dist/mcp/tools/read.js +339 -0
- package/dist/mcp/tools/read.js.map +1 -0
- package/dist/mcp/tools/remote.d.ts +3 -0
- package/dist/mcp/tools/remote.js +254 -0
- package/dist/mcp/tools/remote.js.map +1 -0
- package/dist/mcp/tools/templates.d.ts +12 -0
- package/dist/mcp/tools/templates.js +165 -0
- package/dist/mcp/tools/templates.js.map +1 -0
- package/dist/mcp/tools/work.d.ts +16 -0
- package/dist/mcp/tools/work.js +359 -0
- package/dist/mcp/tools/work.js.map +1 -0
- package/dist/remote/accounts.d.ts +158 -0
- package/dist/remote/accounts.js +207 -0
- package/dist/remote/accounts.js.map +1 -0
- package/dist/remote/adopt.d.ts +139 -0
- package/dist/remote/adopt.js +181 -0
- package/dist/remote/adopt.js.map +1 -0
- package/dist/remote/anchor.d.ts +35 -0
- package/dist/remote/anchor.js +53 -0
- package/dist/remote/anchor.js.map +1 -0
- package/dist/remote/attributes.d.ts +103 -0
- package/dist/remote/attributes.js +245 -0
- package/dist/remote/attributes.js.map +1 -0
- package/dist/remote/audit.d.ts +112 -0
- package/dist/remote/audit.js +215 -0
- package/dist/remote/audit.js.map +1 -0
- package/dist/remote/capabilities.d.ts +267 -0
- package/dist/remote/capabilities.js +225 -0
- package/dist/remote/capabilities.js.map +1 -0
- package/dist/remote/check.d.ts +49 -0
- package/dist/remote/check.js +356 -0
- package/dist/remote/check.js.map +1 -0
- package/dist/remote/comments.d.ts +86 -0
- package/dist/remote/comments.js +87 -0
- package/dist/remote/comments.js.map +1 -0
- package/dist/remote/config-file.d.ts +237 -0
- package/dist/remote/config-file.js +640 -0
- package/dist/remote/config-file.js.map +1 -0
- package/dist/remote/conflicts.d.ts +110 -0
- package/dist/remote/conflicts.js +188 -0
- package/dist/remote/conflicts.js.map +1 -0
- package/dist/remote/connection-catalogue.d.ts +65 -0
- package/dist/remote/connection-catalogue.js +66 -0
- package/dist/remote/connection-catalogue.js.map +1 -0
- package/dist/remote/connection.d.ts +84 -0
- package/dist/remote/connection.js +229 -0
- package/dist/remote/connection.js.map +1 -0
- package/dist/remote/coverage.d.ts +65 -0
- package/dist/remote/coverage.js +244 -0
- package/dist/remote/coverage.js.map +1 -0
- package/dist/remote/credentials.d.ts +95 -0
- package/dist/remote/credentials.js +210 -0
- package/dist/remote/credentials.js.map +1 -0
- package/dist/remote/execute.d.ts +178 -0
- package/dist/remote/execute.js +1245 -0
- package/dist/remote/execute.js.map +1 -0
- package/dist/remote/fingerprint.d.ts +172 -0
- package/dist/remote/fingerprint.js +337 -0
- package/dist/remote/fingerprint.js.map +1 -0
- package/dist/remote/fixtures.d.ts +176 -0
- package/dist/remote/fixtures.js +432 -0
- package/dist/remote/fixtures.js.map +1 -0
- package/dist/remote/guard.d.ts +90 -0
- package/dist/remote/guard.js +83 -0
- package/dist/remote/guard.js.map +1 -0
- package/dist/remote/hierarchy.d.ts +141 -0
- package/dist/remote/hierarchy.js +129 -0
- package/dist/remote/hierarchy.js.map +1 -0
- package/dist/remote/index.d.ts +145 -0
- package/dist/remote/index.js +146 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/remote/inspect.d.ts +103 -0
- package/dist/remote/inspect.js +152 -0
- package/dist/remote/inspect.js.map +1 -0
- package/dist/remote/labels.d.ts +75 -0
- package/dist/remote/labels.js +137 -0
- package/dist/remote/labels.js.map +1 -0
- package/dist/remote/ladder.d.ts +145 -0
- package/dist/remote/ladder.js +387 -0
- package/dist/remote/ladder.js.map +1 -0
- package/dist/remote/ledger.d.ts +97 -0
- package/dist/remote/ledger.js +148 -0
- package/dist/remote/ledger.js.map +1 -0
- package/dist/remote/lifecycle.d.ts +175 -0
- package/dist/remote/lifecycle.js +274 -0
- package/dist/remote/lifecycle.js.map +1 -0
- package/dist/remote/links.d.ts +411 -0
- package/dist/remote/links.js +748 -0
- package/dist/remote/links.js.map +1 -0
- package/dist/remote/managed-block.d.ts +182 -0
- package/dist/remote/managed-block.js +406 -0
- package/dist/remote/managed-block.js.map +1 -0
- package/dist/remote/managed-comment.d.ts +104 -0
- package/dist/remote/managed-comment.js +92 -0
- package/dist/remote/managed-comment.js.map +1 -0
- package/dist/remote/mapping.d.ts +282 -0
- package/dist/remote/mapping.js +336 -0
- package/dist/remote/mapping.js.map +1 -0
- package/dist/remote/merge.d.ts +172 -0
- package/dist/remote/merge.js +221 -0
- package/dist/remote/merge.js.map +1 -0
- package/dist/remote/periods.d.ts +209 -0
- package/dist/remote/periods.js +224 -0
- package/dist/remote/periods.js.map +1 -0
- package/dist/remote/plan.d.ts +671 -0
- package/dist/remote/plan.js +1210 -0
- package/dist/remote/plan.js.map +1 -0
- package/dist/remote/policy.d.ts +67 -0
- package/dist/remote/policy.js +67 -0
- package/dist/remote/policy.js.map +1 -0
- package/dist/remote/preflight.d.ts +112 -0
- package/dist/remote/preflight.js +342 -0
- package/dist/remote/preflight.js.map +1 -0
- package/dist/remote/prerequisites.d.ts +113 -0
- package/dist/remote/prerequisites.js +161 -0
- package/dist/remote/prerequisites.js.map +1 -0
- package/dist/remote/provider.d.ts +802 -0
- package/dist/remote/provider.js +27 -0
- package/dist/remote/provider.js.map +1 -0
- package/dist/remote/providers/github/config.d.ts +84 -0
- package/dist/remote/providers/github/config.js +161 -0
- package/dist/remote/providers/github/config.js.map +1 -0
- package/dist/remote/providers/github/connector.d.ts +33 -0
- package/dist/remote/providers/github/connector.js +774 -0
- package/dist/remote/providers/github/connector.js.map +1 -0
- package/dist/remote/providers/github/edges.d.ts +29 -0
- package/dist/remote/providers/github/edges.js +56 -0
- package/dist/remote/providers/github/edges.js.map +1 -0
- package/dist/remote/providers/github/hierarchy.d.ts +21 -0
- package/dist/remote/providers/github/hierarchy.js +46 -0
- package/dist/remote/providers/github/hierarchy.js.map +1 -0
- package/dist/remote/providers/github/index.d.ts +26 -0
- package/dist/remote/providers/github/index.js +69 -0
- package/dist/remote/providers/github/index.js.map +1 -0
- package/dist/remote/providers/github/project-iteration.d.ts +71 -0
- package/dist/remote/providers/github/project-iteration.js +203 -0
- package/dist/remote/providers/github/project-iteration.js.map +1 -0
- package/dist/remote/providers/github/project-provision.d.ts +130 -0
- package/dist/remote/providers/github/project-provision.js +247 -0
- package/dist/remote/providers/github/project-provision.js.map +1 -0
- package/dist/remote/providers/github/project-status.d.ts +115 -0
- package/dist/remote/providers/github/project-status.js +317 -0
- package/dist/remote/providers/github/project-status.js.map +1 -0
- package/dist/remote/providers/github/projects.d.ts +181 -0
- package/dist/remote/providers/github/projects.js +481 -0
- package/dist/remote/providers/github/projects.js.map +1 -0
- package/dist/remote/providers/github/translator.d.ts +103 -0
- package/dist/remote/providers/github/translator.js +400 -0
- package/dist/remote/providers/github/translator.js.map +1 -0
- package/dist/remote/providers/jira/config.d.ts +96 -0
- package/dist/remote/providers/jira/config.js +200 -0
- package/dist/remote/providers/jira/config.js.map +1 -0
- package/dist/remote/providers/jira/connector.d.ts +42 -0
- package/dist/remote/providers/jira/connector.js +1688 -0
- package/dist/remote/providers/jira/connector.js.map +1 -0
- package/dist/remote/providers/jira/fields.d.ts +292 -0
- package/dist/remote/providers/jira/fields.js +463 -0
- package/dist/remote/providers/jira/fields.js.map +1 -0
- package/dist/remote/providers/jira/hierarchy.d.ts +28 -0
- package/dist/remote/providers/jira/hierarchy.js +60 -0
- package/dist/remote/providers/jira/hierarchy.js.map +1 -0
- package/dist/remote/providers/jira/index.d.ts +29 -0
- package/dist/remote/providers/jira/index.js +100 -0
- package/dist/remote/providers/jira/index.js.map +1 -0
- package/dist/remote/providers/jira/links.d.ts +41 -0
- package/dist/remote/providers/jira/links.js +102 -0
- package/dist/remote/providers/jira/links.js.map +1 -0
- package/dist/remote/providers/jira/sprints.d.ts +80 -0
- package/dist/remote/providers/jira/sprints.js +107 -0
- package/dist/remote/providers/jira/sprints.js.map +1 -0
- package/dist/remote/providers/jira/translator.d.ts +61 -0
- package/dist/remote/providers/jira/translator.js +382 -0
- package/dist/remote/providers/jira/translator.js.map +1 -0
- package/dist/remote/providers/jira/types.d.ts +112 -0
- package/dist/remote/providers/jira/types.js +160 -0
- package/dist/remote/providers/jira/types.js.map +1 -0
- package/dist/remote/providers/jira/vocabulary.d.ts +55 -0
- package/dist/remote/providers/jira/vocabulary.js +91 -0
- package/dist/remote/providers/jira/vocabulary.js.map +1 -0
- package/dist/remote/providers/jsonfile/config.d.ts +61 -0
- package/dist/remote/providers/jsonfile/config.js +83 -0
- package/dist/remote/providers/jsonfile/config.js.map +1 -0
- package/dist/remote/providers/jsonfile/connector.d.ts +34 -0
- package/dist/remote/providers/jsonfile/connector.js +251 -0
- package/dist/remote/providers/jsonfile/connector.js.map +1 -0
- package/dist/remote/providers/jsonfile/index.d.ts +38 -0
- package/dist/remote/providers/jsonfile/index.js +90 -0
- package/dist/remote/providers/jsonfile/index.js.map +1 -0
- package/dist/remote/providers/jsonfile/store.d.ts +59 -0
- package/dist/remote/providers/jsonfile/store.js +48 -0
- package/dist/remote/providers/jsonfile/store.js.map +1 -0
- package/dist/remote/providers/jsonfile/translator.d.ts +54 -0
- package/dist/remote/providers/jsonfile/translator.js +199 -0
- package/dist/remote/providers/jsonfile/translator.js.map +1 -0
- package/dist/remote/providers/linear/config.d.ts +83 -0
- package/dist/remote/providers/linear/config.js +140 -0
- package/dist/remote/providers/linear/config.js.map +1 -0
- package/dist/remote/providers/linear/connector.d.ts +36 -0
- package/dist/remote/providers/linear/connector.js +438 -0
- package/dist/remote/providers/linear/connector.js.map +1 -0
- package/dist/remote/providers/linear/estimate.d.ts +63 -0
- package/dist/remote/providers/linear/estimate.js +112 -0
- package/dist/remote/providers/linear/estimate.js.map +1 -0
- package/dist/remote/providers/linear/index.d.ts +31 -0
- package/dist/remote/providers/linear/index.js +75 -0
- package/dist/remote/providers/linear/index.js.map +1 -0
- package/dist/remote/providers/linear/labels.d.ts +51 -0
- package/dist/remote/providers/linear/labels.js +129 -0
- package/dist/remote/providers/linear/labels.js.map +1 -0
- package/dist/remote/providers/linear/states.d.ts +97 -0
- package/dist/remote/providers/linear/states.js +124 -0
- package/dist/remote/providers/linear/states.js.map +1 -0
- package/dist/remote/providers/linear/translator.d.ts +48 -0
- package/dist/remote/providers/linear/translator.js +343 -0
- package/dist/remote/providers/linear/translator.js.map +1 -0
- package/dist/remote/providers/linear/vocabulary.d.ts +27 -0
- package/dist/remote/providers/linear/vocabulary.js +42 -0
- package/dist/remote/providers/linear/vocabulary.js.map +1 -0
- package/dist/remote/provision.d.ts +45 -0
- package/dist/remote/provision.js +81 -0
- package/dist/remote/provision.js.map +1 -0
- package/dist/remote/pull.d.ts +52 -0
- package/dist/remote/pull.js +116 -0
- package/dist/remote/pull.js.map +1 -0
- package/dist/remote/readiness.d.ts +67 -0
- package/dist/remote/readiness.js +336 -0
- package/dist/remote/readiness.js.map +1 -0
- package/dist/remote/rebase.d.ts +157 -0
- package/dist/remote/rebase.js +255 -0
- package/dist/remote/rebase.js.map +1 -0
- package/dist/remote/reconcile.d.ts +115 -0
- package/dist/remote/reconcile.js +140 -0
- package/dist/remote/reconcile.js.map +1 -0
- package/dist/remote/redact.d.ts +70 -0
- package/dist/remote/redact.js +132 -0
- package/dist/remote/redact.js.map +1 -0
- package/dist/remote/registry.d.ts +32 -0
- package/dist/remote/registry.js +54 -0
- package/dist/remote/registry.js.map +1 -0
- package/dist/remote/remotes.d.ts +94 -0
- package/dist/remote/remotes.js +182 -0
- package/dist/remote/remotes.js.map +1 -0
- package/dist/remote/render.d.ts +147 -0
- package/dist/remote/render.js +683 -0
- package/dist/remote/render.js.map +1 -0
- package/dist/remote/report.d.ts +63 -0
- package/dist/remote/report.js +345 -0
- package/dist/remote/report.js.map +1 -0
- package/dist/remote/resolutions.d.ts +115 -0
- package/dist/remote/resolutions.js +217 -0
- package/dist/remote/resolutions.js.map +1 -0
- package/dist/remote/scaffold.d.ts +134 -0
- package/dist/remote/scaffold.js +370 -0
- package/dist/remote/scaffold.js.map +1 -0
- package/dist/remote/scope.d.ts +57 -0
- package/dist/remote/scope.js +91 -0
- package/dist/remote/scope.js.map +1 -0
- package/dist/remote/selection.d.ts +38 -0
- package/dist/remote/selection.js +50 -0
- package/dist/remote/selection.js.map +1 -0
- package/dist/remote/shape.d.ts +141 -0
- package/dist/remote/shape.js +220 -0
- package/dist/remote/shape.js.map +1 -0
- package/dist/remote/status.d.ts +104 -0
- package/dist/remote/status.js +238 -0
- package/dist/remote/status.js.map +1 -0
- package/dist/remote/sync.d.ts +182 -0
- package/dist/remote/sync.js +523 -0
- package/dist/remote/sync.js.map +1 -0
- package/dist/remote/transport/budget.d.ts +48 -0
- package/dist/remote/transport/budget.js +68 -0
- package/dist/remote/transport/budget.js.map +1 -0
- package/dist/remote/transport/connector.d.ts +115 -0
- package/dist/remote/transport/connector.js +21 -0
- package/dist/remote/transport/connector.js.map +1 -0
- package/dist/remote/transport/error.d.ts +88 -0
- package/dist/remote/transport/error.js +196 -0
- package/dist/remote/transport/error.js.map +1 -0
- package/dist/remote/transport/gh.d.ts +20 -0
- package/dist/remote/transport/gh.js +41 -0
- package/dist/remote/transport/gh.js.map +1 -0
- package/dist/remote/transport/graphql.d.ts +25 -0
- package/dist/remote/transport/graphql.js +81 -0
- package/dist/remote/transport/graphql.js.map +1 -0
- package/dist/remote/transport/http.d.ts +47 -0
- package/dist/remote/transport/http.js +195 -0
- package/dist/remote/transport/http.js.map +1 -0
- package/dist/remote/transport/index.d.ts +18 -0
- package/dist/remote/transport/index.js +19 -0
- package/dist/remote/transport/index.js.map +1 -0
- package/dist/remote/transport/process.d.ts +39 -0
- package/dist/remote/transport/process.js +121 -0
- package/dist/remote/transport/process.js.map +1 -0
- package/dist/remote/transport/rest.d.ts +22 -0
- package/dist/remote/transport/rest.js +57 -0
- package/dist/remote/transport/rest.js.map +1 -0
- package/dist/remote/transport/retry.d.ts +91 -0
- package/dist/remote/transport/retry.js +138 -0
- package/dist/remote/transport/retry.js.map +1 -0
- package/dist/remote/transport-error.d.ts +19 -0
- package/dist/remote/transport-error.js +22 -0
- package/dist/remote/transport-error.js.map +1 -0
- package/dist/remote/vocabulary.d.ts +126 -0
- package/dist/remote/vocabulary.js +57 -0
- package/dist/remote/vocabulary.js.map +1 -0
- package/dist/runner/config.d.ts +7 -0
- package/dist/runner/config.js +61 -0
- package/dist/runner/config.js.map +1 -0
- package/dist/runner/git.d.ts +19 -0
- package/dist/runner/git.js +26 -0
- package/dist/runner/git.js.map +1 -0
- package/dist/runner/index.d.ts +20 -0
- package/dist/runner/index.js +21 -0
- package/dist/runner/index.js.map +1 -0
- package/dist/runner/loop.d.ts +46 -0
- package/dist/runner/loop.js +243 -0
- package/dist/runner/loop.js.map +1 -0
- package/dist/runner/pi.d.ts +39 -0
- package/dist/runner/pi.js +276 -0
- package/dist/runner/pi.js.map +1 -0
- package/dist/runner/shell.d.ts +44 -0
- package/dist/runner/shell.js +174 -0
- package/dist/runner/shell.js.map +1 -0
- package/dist/runner/stats.d.ts +19 -0
- package/dist/runner/stats.js +58 -0
- package/dist/runner/stats.js.map +1 -0
- package/dist/runner/types.d.ts +218 -0
- package/dist/runner/types.js +37 -0
- package/dist/runner/types.js.map +1 -0
- package/dist/server/git.d.ts +8 -0
- package/dist/server/git.js +50 -0
- package/dist/server/git.js.map +1 -0
- package/dist/server/http/respond.d.ts +13 -0
- package/dist/server/http/respond.js +59 -0
- package/dist/server/http/respond.js.map +1 -0
- package/dist/server/http/router.d.ts +27 -0
- package/dist/server/http/router.js +48 -0
- package/dist/server/http/router.js.map +1 -0
- package/dist/server/http/static.d.ts +14 -0
- package/dist/server/http/static.js +55 -0
- package/dist/server/http/static.js.map +1 -0
- package/dist/server/index.d.ts +58 -0
- package/dist/server/index.js +124 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/board.d.ts +8 -0
- package/dist/server/routes/board.js +19 -0
- package/dist/server/routes/board.js.map +1 -0
- package/dist/server/routes/comments.d.ts +13 -0
- package/dist/server/routes/comments.js +36 -0
- package/dist/server/routes/comments.js.map +1 -0
- package/dist/server/routes/flags.d.ts +16 -0
- package/dist/server/routes/flags.js +37 -0
- package/dist/server/routes/flags.js.map +1 -0
- package/dist/server/routes/git.d.ts +13 -0
- package/dist/server/routes/git.js +84 -0
- package/dist/server/routes/git.js.map +1 -0
- package/dist/server/routes/remotes.d.ts +36 -0
- package/dist/server/routes/remotes.js +749 -0
- package/dist/server/routes/remotes.js.map +1 -0
- package/dist/server/routes/views.d.ts +10 -0
- package/dist/server/routes/views.js +63 -0
- package/dist/server/routes/views.js.map +1 -0
- package/dist/server/views/schema.d.ts +2 -0
- package/dist/server/views/schema.js +121 -0
- package/dist/server/views/schema.js.map +1 -0
- package/dist/server/views/store.d.ts +17 -0
- package/dist/server/views/store.js +67 -0
- package/dist/server/views/store.js.map +1 -0
- package/dist/shared/adf.d.ts +83 -0
- package/dist/shared/adf.js +795 -0
- package/dist/shared/adf.js.map +1 -0
- package/dist/shared/blocking.d.ts +130 -0
- package/dist/shared/blocking.js +179 -0
- package/dist/shared/blocking.js.map +1 -0
- package/dist/shared/changes.d.ts +100 -0
- package/dist/shared/changes.js +112 -0
- package/dist/shared/changes.js.map +1 -0
- package/dist/shared/cohesion.d.ts +75 -0
- package/dist/shared/cohesion.js +132 -0
- package/dist/shared/cohesion.js.map +1 -0
- package/dist/shared/dependency-rollup.d.ts +91 -0
- package/dist/shared/dependency-rollup.js +132 -0
- package/dist/shared/dependency-rollup.js.map +1 -0
- package/dist/shared/errors.d.ts +23 -0
- package/dist/shared/errors.js +24 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/flag-rollup.d.ts +88 -0
- package/dist/shared/flag-rollup.js +119 -0
- package/dist/shared/flag-rollup.js.map +1 -0
- package/dist/shared/git-sync.d.ts +90 -0
- package/dist/shared/git-sync.js +9 -0
- package/dist/shared/git-sync.js.map +1 -0
- package/dist/shared/index.d.ts +40 -0
- package/dist/shared/index.js +41 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/model.d.ts +218 -0
- package/dist/shared/model.js +95 -0
- package/dist/shared/model.js.map +1 -0
- package/dist/shared/period-query.d.ts +21 -0
- package/dist/shared/period-query.js +26 -0
- package/dist/shared/period-query.js.map +1 -0
- package/dist/shared/period-stance.d.ts +45 -0
- package/dist/shared/period-stance.js +50 -0
- package/dist/shared/period-stance.js.map +1 -0
- package/dist/shared/plans/breakdown.d.ts +66 -0
- package/dist/shared/plans/breakdown.js +186 -0
- package/dist/shared/plans/breakdown.js.map +1 -0
- package/dist/shared/plans/index.d.ts +21 -0
- package/dist/shared/plans/index.js +22 -0
- package/dist/shared/plans/index.js.map +1 -0
- package/dist/shared/plans/instantiate.d.ts +61 -0
- package/dist/shared/plans/instantiate.js +184 -0
- package/dist/shared/plans/instantiate.js.map +1 -0
- package/dist/shared/plans/reading.d.ts +79 -0
- package/dist/shared/plans/reading.js +149 -0
- package/dist/shared/plans/reading.js.map +1 -0
- package/dist/shared/plans/reparent.d.ts +54 -0
- package/dist/shared/plans/reparent.js +217 -0
- package/dist/shared/plans/reparent.js.map +1 -0
- package/dist/shared/plans/timeline.d.ts +93 -0
- package/dist/shared/plans/timeline.js +224 -0
- package/dist/shared/plans/timeline.js.map +1 -0
- package/dist/shared/plans/upstream.d.ts +67 -0
- package/dist/shared/plans/upstream.js +73 -0
- package/dist/shared/plans/upstream.js.map +1 -0
- package/dist/shared/remote-api.d.ts +413 -0
- package/dist/shared/remote-api.js +11 -0
- package/dist/shared/remote-api.js.map +1 -0
- package/dist/shared/remote-coverage.d.ts +120 -0
- package/dist/shared/remote-coverage.js +98 -0
- package/dist/shared/remote-coverage.js.map +1 -0
- package/dist/shared/remote-readiness.d.ts +162 -0
- package/dist/shared/remote-readiness.js +49 -0
- package/dist/shared/remote-readiness.js.map +1 -0
- package/dist/shared/remote-status.d.ts +268 -0
- package/dist/shared/remote-status.js +79 -0
- package/dist/shared/remote-status.js.map +1 -0
- package/dist/shared/rollup.d.ts +90 -0
- package/dist/shared/rollup.js +119 -0
- package/dist/shared/rollup.js.map +1 -0
- package/dist/shared/static.d.ts +65 -0
- package/dist/shared/static.js +107 -0
- package/dist/shared/static.js.map +1 -0
- package/dist/shared/template-params.d.ts +80 -0
- package/dist/shared/template-params.js +141 -0
- package/dist/shared/template-params.js.map +1 -0
- package/dist/shared/view.d.ts +105 -0
- package/dist/shared/view.js +44 -0
- package/dist/shared/view.js.map +1 -0
- package/dist/shared/work-unit.d.ts +34 -0
- package/dist/shared/work-unit.js +47 -0
- package/dist/shared/work-unit.js.map +1 -0
- package/dist/sync/apply.d.ts +21 -0
- package/dist/sync/apply.js +149 -0
- package/dist/sync/apply.js.map +1 -0
- package/dist/sync/dto.d.ts +9 -0
- package/dist/sync/dto.js +162 -0
- package/dist/sync/dto.js.map +1 -0
- package/dist/sync/index.d.ts +24 -0
- package/dist/sync/index.js +25 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/patch.d.ts +13 -0
- package/dist/sync/patch.js +212 -0
- package/dist/sync/patch.js.map +1 -0
- package/dist/sync/session.d.ts +31 -0
- package/dist/sync/session.js +55 -0
- package/dist/sync/session.js.map +1 -0
- package/dist/sync/static.d.ts +11 -0
- package/dist/sync/static.js +33 -0
- package/dist/sync/static.js.map +1 -0
- package/package.json +95 -4
- package/templates/blank.yml +71 -0
- package/templates/context/bug.md +107 -0
- package/templates/context/default.md +119 -0
- package/templates/context/epic.md +81 -0
- package/templates/context/feature.md +91 -0
- package/templates/context/research.md +87 -0
- package/templates/context/review.md +81 -0
- package/templates/context/story.md +94 -0
- package/templates/context/sub_task.md +108 -0
- package/templates/context/task.md +86 -0
- package/templates/context/test.md +73 -0
- package/templates/context/user_story.md +147 -0
- package/templates/kanban.yml +226 -0
- package/templates/scrum.yml +567 -0
- package/web/dist/assets/index-D0j8OnHq.js +35 -0
- package/web/dist/assets/index-DFL7v8aP.css +1 -0
- package/web/dist/index.html +13 -0
- package/web/dist-viewer/assets/index-Bcns6OuC.css +1 -0
- package/web/dist-viewer/assets/index-vVXzeiFo.js +7 -0
- package/web/dist-viewer/index.html +14 -0
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lpm-planning
|
|
3
|
+
description: Populate and reshape a light-plan board — writing epics, features and user stories with real requirements and a definition of done, breaking work into granular modular pieces, chaining it with dependencies, assigning it to people or pools, and scheduling it into sprints. Load this for "write stories for X", "break this down", "plan the sprint", "turn this brief into tickets", "assign this work", or any use of create_document / split_issue / insert_between / convert_document / copy_documents / link_issues.
|
|
4
|
+
roles:
|
|
5
|
+
- pm
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Planning work on a light-plan board
|
|
9
|
+
|
|
10
|
+
Load the `lpm` skill first for the tool map and the routing mechanic. The
|
|
11
|
+
`lpm-planner` agent in `.claude/agents/` applies this as a persona; this skill is
|
|
12
|
+
the workflow reference.
|
|
13
|
+
|
|
14
|
+
## Before you write anything
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
board_overview
|
|
18
|
+
list_templates
|
|
19
|
+
list_documents { kind: "issue", workUnitsOnly: false, limit: 100 }
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
You need the types and their exact `hierarchy`, the statuses, the
|
|
23
|
+
`priorityAttribute` and `effortAttribute`, and what already exists so you do not
|
|
24
|
+
duplicate it.
|
|
25
|
+
|
|
26
|
+
`list_templates` is the one people forget. The board's **registry** holds
|
|
27
|
+
reusable pieces of plan the team has already worked out — a feature with its
|
|
28
|
+
standard stories, the steps a particular kind of change has to go through. If
|
|
29
|
+
one covers what you are about to write, instantiate it rather than typing the
|
|
30
|
+
same shape again: it is faster, and creating it by hand quietly skips a process
|
|
31
|
+
somebody wrote down on purpose. `lpm-templates` is the full reference.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
instantiate_template { id: "TPL-3", params: { name: "Payments" }, parent: "LP-14" }
|
|
35
|
+
``` **The hierarchy is enforced**: a type's index in the list is the
|
|
36
|
+
folder depth it must sit at, so plan the shape before you create the first
|
|
37
|
+
document.
|
|
38
|
+
|
|
39
|
+
## Creating documents
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
create_document {
|
|
43
|
+
type: "user_story", # a name from board_overview
|
|
44
|
+
title: "Let a signed-out shopper pay with an email address",
|
|
45
|
+
parent: "LP-14", # must be the type one level up
|
|
46
|
+
attributes: { story_points: 5, priority: "high" },
|
|
47
|
+
period: "TL-8",
|
|
48
|
+
assignee: "RS-4",
|
|
49
|
+
dependsOn: ["LP-40"],
|
|
50
|
+
relatedFiles: ["docs/prd.md#L120-L164", "src/checkout/session.ts"],
|
|
51
|
+
body: "## Context\n…"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
lpm new user_story -t "Let a signed-out shopper pay with an email address" \
|
|
57
|
+
-p LP-14 --set story_points=5 --set priority=high --period TL-8 --assignee RS-4 \
|
|
58
|
+
--related "docs/prd.md#L120-L164" --related src/checkout/session.ts
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Omit `body` to get the type's template from `.lpm/config.yml` — **prefer that**,
|
|
62
|
+
so every ticket on the board reads alike. Supplying `body` replaces the template
|
|
63
|
+
entirely, so keep the same headings. For anything long, use a file:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
lpm set LP-42 --body-file ./story.md
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Build **top-down**: the container first, then the leaves that carry the work.
|
|
70
|
+
|
|
71
|
+
## What makes a ticket startable
|
|
72
|
+
|
|
73
|
+
A ticket is ready when someone who has never met you can read it and know what to
|
|
74
|
+
build, why, and when to stop.
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
## Context
|
|
78
|
+
Why this exists, in two or three sentences — the user problem or the technical
|
|
79
|
+
force behind it, and what stays broken if it is not done.
|
|
80
|
+
|
|
81
|
+
## Requirements
|
|
82
|
+
- Specific, testable statements, each independently checkable.
|
|
83
|
+
- The real constraints: the endpoint, the format, the limit, the error case.
|
|
84
|
+
- What happens when it goes wrong, not only when it goes right.
|
|
85
|
+
|
|
86
|
+
## Definition of done
|
|
87
|
+
- [ ] The observable outcome, verifiable without you.
|
|
88
|
+
- [ ] Tests: which cases, at which level.
|
|
89
|
+
- [ ] Docs / config / migration touched, if any.
|
|
90
|
+
- [ ] Anything that must be true for the next ticket in the chain to start.
|
|
91
|
+
|
|
92
|
+
## Out of scope
|
|
93
|
+
What a reasonable developer might otherwise pull in.
|
|
94
|
+
|
|
95
|
+
## Notes
|
|
96
|
+
Where to start looking (`src/…`), prior art, decisions already made.
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Never omit *Definition of done*.** A ticket without it cannot be finished, only
|
|
100
|
+
abandoned — the developer will guess.
|
|
101
|
+
|
|
102
|
+
Titles name a capability in the user's language, specific enough to be
|
|
103
|
+
unambiguous in a list of forty. `Guest checkout` is a topic, not a ticket.
|
|
104
|
+
|
|
105
|
+
| Smell | Fix |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| "Improve error handling" | Name the errors and the behaviour for each |
|
|
108
|
+
| Requirements that restate the title | Write the actual constraints |
|
|
109
|
+
| Implementation steps as requirements | State the outcome; put suggestions in *Notes* |
|
|
110
|
+
| No *Out of scope* on anything vague | Add it — scope creep is the default |
|
|
111
|
+
| "Also update the docs" bolted on | Separate ticket, or an explicit DoD line |
|
|
112
|
+
|
|
113
|
+
Set the board's priority and effort attributes on **every leaf**. They are not
|
|
114
|
+
decoration: priority orders `next_tasks`, effort drives `team_load` and
|
|
115
|
+
`split --splitEffort`. Enum attributes accept only the values `board_overview`
|
|
116
|
+
lists.
|
|
117
|
+
|
|
118
|
+
### What the developer will actually read
|
|
119
|
+
|
|
120
|
+
Nobody reads a story on its own. `get_instructions { id }` / `lpm instructions
|
|
121
|
+
<id>` stacks the whole ancestry above it — programme, epic, feature, then the
|
|
122
|
+
story — and hands the developer one brief. So:
|
|
123
|
+
|
|
124
|
+
- **Do not restate the level above.** It is already there, immediately before
|
|
125
|
+
yours, and repeating it buries the requirement.
|
|
126
|
+
- **A thin epic is a thin brief for every story under it.** The epic body is the
|
|
127
|
+
only place "why" lives. Write it once, properly.
|
|
128
|
+
- **Check your own work with it.** `lpm instructions <id>` on a ticket you just
|
|
129
|
+
wrote shows exactly what the developer gets. It is the cheapest review there is,
|
|
130
|
+
and it catches the story that reads fine alone and explains nothing in context.
|
|
131
|
+
|
|
132
|
+
### Point the ticket at its files
|
|
133
|
+
|
|
134
|
+
`relatedFiles` is a list of paths on the issue, printed at the top of the brief
|
|
135
|
+
under *Files this is about*. Two entries are worth more than the rest:
|
|
136
|
+
|
|
137
|
+
- **The requirement you wrote it from**, with a line range where you have one:
|
|
138
|
+
`docs/prd.md#L120-L164`. Your *Context* section says which part matters; this
|
|
139
|
+
lets the developer read the source instead of your paraphrase of it.
|
|
140
|
+
- **The code you already know changes**, when you know it. When you do not, leave
|
|
141
|
+
it out — a wrong path costs the reader more than a missing one, and the
|
|
142
|
+
developer adds the real ones as they go.
|
|
143
|
+
|
|
144
|
+
Nothing is checked against the filesystem, so naming a file that does not exist
|
|
145
|
+
yet is fine and is often precisely the instruction.
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
update_document { id: "LP-42", relatedFiles: ["docs/prd.md#L120-L164", "src/checkout/session.ts"] }
|
|
149
|
+
```
|
|
150
|
+
```bash
|
|
151
|
+
lpm set LP-42 --related "docs/prd.md#L120-L164" # --unrelated to detach
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
The payoff lands on the *next* ticket: where B depends on A, B's brief lists the
|
|
155
|
+
files A named under *what that work touched*. Sequencing tickets and naming their
|
|
156
|
+
files turns a dependency edge from "wait for that" into "read that first, and
|
|
157
|
+
here is where it landed".
|
|
158
|
+
|
|
159
|
+
## Breaking work down
|
|
160
|
+
|
|
161
|
+
Aim for leaves that are **one developer, a few days, one reviewable change**.
|
|
162
|
+
|
|
163
|
+
Split along seams that can be finished separately — a layer (schema → API → UI),
|
|
164
|
+
a user-visible slice (read-only → editing → bulk), a risk boundary (spike the
|
|
165
|
+
unknown first, then build on the answer). Avoid "part 1 / part 2", and anything
|
|
166
|
+
whose first piece cannot be merged and left alone.
|
|
167
|
+
|
|
168
|
+
The reshaping tools go through the same planners as the CLI and the web canvas, so
|
|
169
|
+
the graph is rewired for you: **whatever blocked the original blocks the first
|
|
170
|
+
piece, and whatever waited on it waits on the last.** Never rebuild that by hand.
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
split_issue { id: "LP-42", titles: ["Schema", "API", "UI"], mode: "children" }
|
|
174
|
+
```
|
|
175
|
+
Nests the pieces inside the original, which becomes a container. Use when the
|
|
176
|
+
parent is a meaningful unit that stays on the board.
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
split_issue { id: "LP-42", titles: [...], mode: "replace", splitEffort: true }
|
|
180
|
+
```
|
|
181
|
+
Puts the pieces where it stood and deletes it. Use when the original was simply
|
|
182
|
+
too big to be one thing.
|
|
183
|
+
|
|
184
|
+
**`chain` defaults to `true`** — each piece depends on the one before it. Right
|
|
185
|
+
for a layered split, wrong for independent work: pass `chain: false` or
|
|
186
|
+
`--no-chain`, or you will serialise the team by accident.
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
insert_between { source: "LP-4", target: "LP-7", title: "Validate the payload" }
|
|
190
|
+
convert_document { id: "LP-9", under: "LP-14" } # demote to fit
|
|
191
|
+
convert_document { id: "LP-9", type: "feature" } # change what it is
|
|
192
|
+
convert_document { id: "LP-9", under: "LP-14", buildParents: true } # create missing levels
|
|
193
|
+
copy_documents { ids: ["LP-20"], under: "LP-31" } # repeat a structure
|
|
194
|
+
delete_document { id: "LP-20", recursive: true }
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
`insert_between` **replaces** the edge: `LP-4 → LP-7` becomes `LP-4 → new → LP-7`.
|
|
198
|
+
|
|
199
|
+
`copy_documents` keeps dependencies *within* the copied selection and repoints
|
|
200
|
+
them at the copies; edges leaving the selection are dropped, so the duplicate
|
|
201
|
+
stands on its own.
|
|
202
|
+
|
|
203
|
+
**Always `dryRun: true` first** on `split_issue`, `convert_document` and
|
|
204
|
+
`delete_document` when children or dependencies are involved. Read what it says it
|
|
205
|
+
will do.
|
|
206
|
+
|
|
207
|
+
## Sequencing
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
link_issues { blocked: "LP-42", blockedBy: ["LP-40", "LP-41"] }
|
|
211
|
+
link_issues { blocked: "LP-42", blockedBy: ["LP-40"], remove: true }
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Only the forward edge is stored; the inverse is derived. A dependency that would
|
|
215
|
+
close a cycle is refused.
|
|
216
|
+
|
|
217
|
+
**`depends_on` is the only edge that gates the queue**; `relates_to` implies
|
|
218
|
+
nothing. So add a dependency only where the work really cannot start, and put
|
|
219
|
+
everything else — what the issue was written from, what it is like — in the body.
|
|
220
|
+
|
|
221
|
+
**An edge is inherited by everything inside the issue.** Link the two features
|
|
222
|
+
and every story under the second one waits for the first one's work — you do not
|
|
223
|
+
wire story to story to say "this feature comes after that one", and you should
|
|
224
|
+
not: a mesh of leaf edges says the same thing less clearly and goes stale the
|
|
225
|
+
moment somebody adds a story. Link at the level the gate is really at. A
|
|
226
|
+
dependency on a container is cleared when the work *inside* it is finished, not
|
|
227
|
+
when somebody moves the container to `done`, so a feature-level edge does not
|
|
228
|
+
need anyone to remember to close the feature.
|
|
229
|
+
|
|
230
|
+
**And an edge is reflected onto the containers above it, up to the one the two
|
|
231
|
+
ends share.** The other direction of the same rule: a story waiting on a story
|
|
232
|
+
in another feature puts those two features in that order, and the epics above
|
|
233
|
+
them. `link_issues` reports it as `alsoOrders` and `get_document` reads it back
|
|
234
|
+
as `rolledUpBlockedBy` / `rolledUpBlocks`, so you never have to write it down —
|
|
235
|
+
and you must not. Adding the container edge yourself makes it a real gate that
|
|
236
|
+
every piece of work inside it inherits, which stops a dozen stories that are
|
|
237
|
+
waiting on nothing. Write the edge where the gate really is, and read the levels
|
|
238
|
+
above it.
|
|
239
|
+
|
|
240
|
+
Two rules that keep a graph useful:
|
|
241
|
+
|
|
242
|
+
- **Add an edge only for a real gate** — B genuinely cannot start until A is done.
|
|
243
|
+
"It would be tidier in this order" is a preference, and it will idle a
|
|
244
|
+
developer.
|
|
245
|
+
- **Prefer a wide graph to a deep one.** Three chains of four running in parallel
|
|
246
|
+
beat one chain of twelve. Look at what you built and ask how many people could
|
|
247
|
+
start tomorrow; if the answer is one, you wrote a queue, not a plan.
|
|
248
|
+
|
|
249
|
+
When work comes out of a spike, the ordering is a dependency like any other:
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
link_issues { blocked: "LP-51", blockedBy: ["LP-30"] }
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Two consequences to plan around:
|
|
256
|
+
|
|
257
|
+
- **Put the spike where it can run first.** A research task inside the very
|
|
258
|
+
feature that waits on its findings deadlocks both — the feature waits on the
|
|
259
|
+
spike, the spike inherits the feature's dependencies. `lpm check` reports it
|
|
260
|
+
as a cycle. Hang a spike that several features wait on off the level *above*
|
|
261
|
+
them.
|
|
262
|
+
- **Say what it found, in the body.** The queue only needs to know the order.
|
|
263
|
+
Which measurement, which document, which numbers — that goes in LP-30's body
|
|
264
|
+
and its related files, and it is what a developer actually reads.
|
|
265
|
+
|
|
266
|
+
`relates_to` is non-blocking association and is **CLI-only**:
|
|
267
|
+
`lpm link LP-7 --relates-to LP-9`.
|
|
268
|
+
|
|
269
|
+
## Assigning
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
update_document { id: "LP-42", assignee: "RS-4" } # a pool
|
|
273
|
+
update_document { id: "LP-42", assignee: "RS-1" } # a named person
|
|
274
|
+
update_document { id: "LP-42", assignee: null } # back to the backlog
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Prefer the pool.** Assigning by name commits someone else's time and strands
|
|
278
|
+
work when they are away. Name a person when the work genuinely needs their
|
|
279
|
+
context, their area or their review.
|
|
280
|
+
|
|
281
|
+
Coverage connects a person to a pool, is one hop, does not chain, and is CLI-only:
|
|
282
|
+
`lpm link RS-1 --covers RS-4`.
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
team_load { period: "TL-8" }
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Read three things: `uncovered` (pools nobody can serve — always fix), the
|
|
289
|
+
`unassigned` row (open work nobody owns), and each row's `open` and `effort`
|
|
290
|
+
against `capacity`. It is a **load report, not a scheduler**.
|
|
291
|
+
|
|
292
|
+
## Scheduling
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
update_document { id: "LP-42", period: "TL-8" }
|
|
296
|
+
update_document { id: "LP-42", period: null }
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Any issue at any level goes in any period. `next_tasks` puts the running or
|
|
300
|
+
overdue period first, then unscheduled work, then periods that have not started —
|
|
301
|
+
so scheduling is how you say "not yet" without blocking anything.
|
|
302
|
+
|
|
303
|
+
## Verify the plan actually routes
|
|
304
|
+
|
|
305
|
+
Writing the tickets is half the job.
|
|
306
|
+
|
|
307
|
+
1. **`check_board`** — broken references, cycles, hierarchy violations, periods
|
|
308
|
+
that do not fit. Fix every error.
|
|
309
|
+
2. **`flagged_issues`** — is anybody stopped? Answer those before writing anything
|
|
310
|
+
new; a flag is capacity sitting idle, and it costs more than any ticket you are
|
|
311
|
+
about to add. See "Answering flags" below.
|
|
312
|
+
3. **Simulate the handoff**: `next_tasks { assignee: "<person>" }` for each person
|
|
313
|
+
you planned for. That is what they will really be offered, pool work included.
|
|
314
|
+
Nothing? Find out why — assigned to a container, blocked by something
|
|
315
|
+
unfinished, in a pool nobody covers, or in a period that has not started.
|
|
316
|
+
4. **`team_load`** — is anyone carrying everything? Is anything uncovered?
|
|
317
|
+
5. **Read your weakest story with `get_document`** and ask whether you could start
|
|
318
|
+
it cold. If not, it is not ready.
|
|
319
|
+
|
|
320
|
+
Report the result by what it enables — "9 stories under LP-14, three parallel
|
|
321
|
+
chains, Alice and the web pool are each offered work tomorrow, LP-51 waits on the
|
|
322
|
+
spike LP-30" — not by document count.
|
|
323
|
+
|
|
324
|
+
## Anti-patterns
|
|
325
|
+
|
|
326
|
+
| Doing this | Why it fails |
|
|
327
|
+
| --- | --- |
|
|
328
|
+
| Assigning an epic | Containers are never offered; assign the work units under it |
|
|
329
|
+
| Chaining every split | Serialises the team; use `chain: false` for parallel work |
|
|
330
|
+
| A dependency because it "feels ordered" | Idles a developer for nothing |
|
|
331
|
+
| Parking work in an uncovered pool | Nobody can ever pick it up |
|
|
332
|
+
| A story with no definition of done | Cannot be finished, only abandoned |
|
|
333
|
+
| Re-parenting or re-assigning in-flight work silently | Check `current_tasks`, and comment on the issue saying why |
|
|
334
|
+
| Hand-editing `.lpm/` markdown to "fix" structure | Use `convert_document` / `lpm convert`; the hierarchy is validated |
|
|
335
|
+
| Clearing a flag without answering it | Sends the developer back into the same wall, with the record now claiming it was dealt with |
|
|
336
|
+
| Planning new work while flags sit unanswered | Somebody has already stopped; new tickets do not help them |
|
|
337
|
+
| Guessing at `relatedFiles` | A wrong path costs the reader more than a missing one |
|
|
338
|
+
|
|
339
|
+
## Answering flags
|
|
340
|
+
|
|
341
|
+
A developer who cannot finish something flags it: the issue keeps its status and
|
|
342
|
+
assignee, turns red on the canvas, and carries a comment saying what stopped and
|
|
343
|
+
what would resolve it. `blocked` = something outside the issue has to happen
|
|
344
|
+
first; `paused` = deliberately set down; `help` = a person is needed.
|
|
345
|
+
|
|
346
|
+
**This is the planner's inbox.** Read it first:
|
|
347
|
+
|
|
348
|
+
```
|
|
349
|
+
flagged_issues # everything stopped, board-wide
|
|
350
|
+
list_comments { id: "LP-42" } # why — a flag always carries one
|
|
351
|
+
```
|
|
352
|
+
```bash
|
|
353
|
+
lpm flag list
|
|
354
|
+
lpm comment LP-42 --list
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
Answer it before you clear it, and write the answer where it belongs rather than
|
|
358
|
+
only in a comment:
|
|
359
|
+
|
|
360
|
+
| The flag says | The fix |
|
|
361
|
+
| --- | --- |
|
|
362
|
+
| A requirement is missing or ambiguous | Put the answer in the issue body (`update_document`), not just in a reply — the next reader reads the body |
|
|
363
|
+
| A decision is needed | Record the decision *and* the reasoning, so nobody re-litigates it |
|
|
364
|
+
| Something has to happen first | `link_issues` — the flag was right and the sequencing was wrong |
|
|
365
|
+
| The ticket was too vague to build | Rewrite it. A flag is a bug report about your ticket |
|
|
366
|
+
|
|
367
|
+
Then, and only then:
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
clear_flag { id: "LP-42", comment: "<what changed, so the work can resume>" }
|
|
371
|
+
```
|
|
372
|
+
```bash
|
|
373
|
+
lpm flag clear LP-42 --comment "..."
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Clearing is the plan owner's, not the implementer's — it means "carry on", and it
|
|
377
|
+
is a claim that the thing that stopped the work has actually been dealt with.
|
|
378
|
+
|
|
379
|
+
## End-to-end: a brief becomes a sprint
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
board_overview # types, hierarchy, statuses, attributes
|
|
383
|
+
list_documents { kind: "issue", search: "checkout" } # does it already exist?
|
|
384
|
+
|
|
385
|
+
create_document { type: "epic", title: "Checkout revamp", parent: "LP-1" }
|
|
386
|
+
create_document { type: "feature", title: "Guest checkout", parent: "LP-12" }
|
|
387
|
+
|
|
388
|
+
# the leaves, each written to the bar
|
|
389
|
+
create_document { type: "research", title: "Which PSPs support guest tokenisation?",
|
|
390
|
+
parent: "LP-13", attributes: { priority: "high" }, body: "## Context…" }
|
|
391
|
+
create_document { type: "user_story", title: "Let a signed-out shopper pay with an email address",
|
|
392
|
+
parent: "LP-13", attributes: { story_points: 5, priority: "high" },
|
|
393
|
+
relatedFiles: ["docs/prd.md#L120-L164", "src/checkout/session.ts"], body: "…" }
|
|
394
|
+
create_document { type: "user_story", title: "Send a guest order confirmation",
|
|
395
|
+
parent: "LP-13", attributes: { story_points: 3, priority: "medium" }, body: "…" }
|
|
396
|
+
|
|
397
|
+
# sequence: only real gates
|
|
398
|
+
link_issues { blocked: "LP-15", blockedBy: ["LP-14"] } # story waits on the spike
|
|
399
|
+
# LP-16 is independent — deliberately unchained, so two people can start
|
|
400
|
+
|
|
401
|
+
# route and schedule
|
|
402
|
+
update_document { id: "LP-14", assignee: "RS-1", period: "TL-8" }
|
|
403
|
+
update_document { id: "LP-15", assignee: "RS-4", period: "TL-8" }
|
|
404
|
+
update_document { id: "LP-16", assignee: "RS-4", period: "TL-8" }
|
|
405
|
+
|
|
406
|
+
# prove it
|
|
407
|
+
check_board
|
|
408
|
+
team_load { period: "TL-8" }
|
|
409
|
+
next_tasks { assignee: "RS-1" } # LP-14
|
|
410
|
+
next_tasks { assignee: "RS-2" } # LP-16 via the pool; LP-15 correctly withheld
|
|
411
|
+
```
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lpm-templates
|
|
3
|
+
description: The template registry on a light-plan board — reusable pieces of plan a team has already worked out, and the process templates that capture how a particular kind of change has to be done. Load this before creating documents on a board, whenever a task involves `lpm template`, `.lpm/registry/`, the MCP tools list_templates / get_template / instantiate_template, or a request to "add the standard stories", "follow our process for X", "make this reusable" or "turn this into a template".
|
|
4
|
+
roles:
|
|
5
|
+
- developer
|
|
6
|
+
- pm
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# The template registry
|
|
10
|
+
|
|
11
|
+
Load the `lpm` skill first for the tool map.
|
|
12
|
+
|
|
13
|
+
A board's **registry** (`.lpm/registry/`) holds reusable pieces of plan: a
|
|
14
|
+
feature with the three stories it always needs, the checklist a release goes
|
|
15
|
+
through, the sequence a schema migration has to follow. They are written in the
|
|
16
|
+
board's own issue types and nest the same way, so a template is the shape of
|
|
17
|
+
real work rather than a description of it.
|
|
18
|
+
|
|
19
|
+
## Check the registry before you create anything
|
|
20
|
+
|
|
21
|
+
This is the rule the registry exists for. A team that wrote down "every API
|
|
22
|
+
feature needs a schema story, an endpoint story and a docs story" and then
|
|
23
|
+
watched an agent create two of them has a registry that is not doing its job.
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
list_templates # everything, with what each one is for
|
|
27
|
+
list_templates { search: "api" } # narrow it
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
lpm template list
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Ask two questions of the result:
|
|
35
|
+
|
|
36
|
+
1. **Does one of these cover what I am about to write?** If so, instantiate it —
|
|
37
|
+
it is faster and it is the shape this team agreed on.
|
|
38
|
+
2. **Does one of these describe a *process* my work falls under?** A template
|
|
39
|
+
called "Database migration" is a team saying "this is how we do those". Follow
|
|
40
|
+
it even when the work looks small enough to skip a step.
|
|
41
|
+
|
|
42
|
+
If nothing matches, create documents the ordinary way. An empty registry is a
|
|
43
|
+
perfectly good answer; a *skipped* registry is not.
|
|
44
|
+
|
|
45
|
+
## Reading one before you use it
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
get_template { id: "TPL-3" }
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
lpm template show TPL-3
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
You get what it is for, every parameter with its type and whether it is
|
|
56
|
+
required, and the whole tree of documents it would create with the dependencies
|
|
57
|
+
between them. Read it: the parameter names are rarely self-explanatory, and the
|
|
58
|
+
tree tells you whether it fits where you meant to put it.
|
|
59
|
+
|
|
60
|
+
## Putting one on the board
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
instantiate_template {
|
|
64
|
+
id: "TPL-3",
|
|
65
|
+
params: { name: "Payments", owner: "RS-4" },
|
|
66
|
+
parent: "LP-14",
|
|
67
|
+
dryRun: true # see what would land first
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
lpm template apply TPL-3 --params ./payments.json --under LP-14
|
|
73
|
+
lpm template apply TPL-3 --set name=Payments --set owner=RS-4 --under LP-14 --dry-run
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Everything in the template is created at once, `{{parameters}}` are filled in
|
|
77
|
+
throughout — titles, bodies, related files and attribute values — and the
|
|
78
|
+
dependencies between the templates become dependencies between the new issues.
|
|
79
|
+
The registry itself is never touched.
|
|
80
|
+
|
|
81
|
+
Three things it refuses, all of them on purpose:
|
|
82
|
+
|
|
83
|
+
- **a missing required parameter**, naming it;
|
|
84
|
+
- **a parameter the template never declared**, so a typo in a JSON file is not a
|
|
85
|
+
template that silently produced the wrong board;
|
|
86
|
+
- **a parent the hierarchy will not accept** — a feature template needs an epic
|
|
87
|
+
to sit under, and it says so before anything is written.
|
|
88
|
+
|
|
89
|
+
`--under` / `parent` is almost always needed. Without it the template lands at
|
|
90
|
+
the top level, which only works for a template of a top-level type.
|
|
91
|
+
|
|
92
|
+
## Writing a template
|
|
93
|
+
|
|
94
|
+
Only do this when asked, or when you have just created the same shape for the
|
|
95
|
+
third time and can say so.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
lpm template new folder -t "Delivery" -d "Standard delivery patterns"
|
|
99
|
+
lpm template new folder -t "Epic slot" --parent TPL-1
|
|
100
|
+
lpm template new feature -t "{{name}} API" --parent TPL-2 \
|
|
101
|
+
-d "REST endpoint with schema, tests and docs" \
|
|
102
|
+
--param name:string:required --param owner:string=nobody
|
|
103
|
+
lpm template new user_story -t "Design the {{name}} schema" --parent TPL-3
|
|
104
|
+
lpm template new user_story -t "Implement {{name}} endpoints" --parent TPL-3
|
|
105
|
+
lpm link TPL-5 --depends-on TPL-4
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Three rules, and they are all consequences of the registry mirroring the issue
|
|
109
|
+
hierarchy:
|
|
110
|
+
|
|
111
|
+
- **A template sits where its issue would.** A template of a feature is at the
|
|
112
|
+
feature's depth, which means something has to occupy the levels above it.
|
|
113
|
+
- **A `folder` is what occupies them.** It stands in for a level nobody
|
|
114
|
+
templatized — the "epic slot" above — and groups templates for reading. A
|
|
115
|
+
folder is never instantiated and never sits *inside* a template.
|
|
116
|
+
- **Parameters are declared on the root**: the template somebody instantiates,
|
|
117
|
+
the one whose parent is a folder. Its children take the same answers.
|
|
118
|
+
|
|
119
|
+
A parameter is declared exactly like a board attribute — `type`, `required`,
|
|
120
|
+
`default`, `values` for an enum — and `{{name}}` is written wherever the answer
|
|
121
|
+
should go. An attribute whose whole value is one placeholder keeps the
|
|
122
|
+
parameter's type, so `--set story_points='{{points}}'` on an integer attribute
|
|
123
|
+
works.
|
|
124
|
+
|
|
125
|
+
Give every template a **description**. A registry listing with no descriptions
|
|
126
|
+
is a folder of ids nobody will read twice.
|
|
127
|
+
|
|
128
|
+
## Building one on the canvas
|
|
129
|
+
|
|
130
|
+
`lpm ui` → New view → **Template registry**. The same canvas, table and panel as
|
|
131
|
+
a board view, over the registry instead: drag templates into folders, draw
|
|
132
|
+
dependencies between them, edit descriptions and parameters in the panel, and
|
|
133
|
+
Push when it is right. Instantiating is a CLI and MCP job, because that is where
|
|
134
|
+
the parameter file lives.
|
|
135
|
+
|
|
136
|
+
## What a template is not
|
|
137
|
+
|
|
138
|
+
- **Not a context template.** `.lpm/templates/context/` holds the layouts
|
|
139
|
+
`lpm instructions` renders a working brief with. Different folder, different
|
|
140
|
+
job, and those *are* executable — see `docs/context-templates.md`.
|
|
141
|
+
- **Not board truth.** Nothing in the registry gates work, ranks a queue or
|
|
142
|
+
appears in `lpm task next`. It is a catalogue.
|
|
143
|
+
- **Not a script.** `{{name}}` is replaced with a value. There is no logic, no
|
|
144
|
+
loops and nothing is evaluated.
|