@pennyfarthing/core 7.0.2 → 7.4.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/{packages/core/dist → dist}/cli/commands/cyclist.d.ts +2 -2
- package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts.map +1 -1
- package/{packages/core/dist → dist}/cli/commands/cyclist.js +8 -9
- package/dist/cli/commands/cyclist.js.map +1 -0
- package/{packages/core/dist → dist}/cli/commands/cyclist.test.js +6 -4
- package/dist/cli/commands/cyclist.test.js.map +1 -0
- package/{packages/core/dist → dist}/cli/commands/update.d.ts.map +1 -1
- package/{packages/core/dist → dist}/cli/commands/update.js +9 -136
- package/dist/cli/commands/update.js.map +1 -0
- package/{packages/core/dist → dist}/cli/cyclist-migration.test.js +4 -3
- package/{packages/core/dist → dist}/cli/cyclist-migration.test.js.map +1 -1
- package/{packages/core/dist → dist}/cli/utils/constants.d.ts +7 -1
- package/dist/cli/utils/constants.d.ts.map +1 -0
- package/{packages/core/dist → dist}/cli/utils/constants.js +4 -2
- package/{packages/core/dist → dist}/cli/utils/constants.js.map +1 -1
- package/{packages/core/dist → dist}/cli/utils/themes.d.ts +1 -4
- package/{packages/core/dist → dist}/cli/utils/themes.d.ts.map +1 -1
- package/{packages/core/dist → dist}/cli/utils/themes.js +2 -22
- package/dist/cli/utils/themes.js.map +1 -0
- package/dist/cli/utils/themes.test.d.ts +12 -0
- package/{packages/core/dist → dist}/cli/utils/themes.test.js +16 -13
- package/dist/cli/utils/themes.test.js.map +1 -0
- package/{packages/core/dist → dist}/cli/workspace.test.js +5 -8
- package/{packages/core/dist → dist}/cli/workspace.test.js.map +1 -1
- package/{packages/core/dist → dist}/index.d.ts +1 -0
- package/{packages/core/dist → dist}/index.d.ts.map +1 -1
- package/{packages/core/dist → dist}/index.js +10 -0
- package/{packages/core/dist → dist}/index.js.map +1 -1
- package/dist/jira/jira-epic-creation.d.ts +109 -0
- package/dist/jira/jira-epic-creation.d.ts.map +1 -0
- package/dist/jira/jira-epic-creation.js +253 -0
- package/dist/jira/jira-epic-creation.js.map +1 -0
- package/dist/jira/jira-epic-creation.test.d.ts +16 -0
- package/dist/jira/jira-epic-creation.test.d.ts.map +1 -0
- package/dist/jira/jira-epic-creation.test.js +387 -0
- package/dist/jira/jira-epic-creation.test.js.map +1 -0
- package/dist/jira/jira-sprint-sync.d.ts +247 -0
- package/dist/jira/jira-sprint-sync.d.ts.map +1 -0
- package/dist/jira/jira-sprint-sync.js +670 -0
- package/dist/jira/jira-sprint-sync.js.map +1 -0
- package/dist/jira/jira-sprint-sync.test.d.ts +16 -0
- package/dist/jira/jira-sprint-sync.test.d.ts.map +1 -0
- package/dist/jira/jira-sprint-sync.test.js +845 -0
- package/dist/jira/jira-sprint-sync.test.js.map +1 -0
- package/{packages/core/dist → dist}/scripts/generate-spider.d.ts +11 -1
- package/{packages/core/dist → dist}/scripts/generate-spider.d.ts.map +1 -1
- package/{packages/core/dist → dist}/scripts/generate-spider.js +24 -1
- package/dist/scripts/generate-spider.js.map +1 -0
- package/{packages/core/dist → dist}/scripts/generate-spider.test.js +6 -4
- package/dist/scripts/generate-spider.test.js.map +1 -0
- package/dist/workflow/gate-handler.d.ts +94 -0
- package/dist/workflow/gate-handler.d.ts.map +1 -0
- package/dist/workflow/gate-handler.js +189 -0
- package/dist/workflow/gate-handler.js.map +1 -0
- package/dist/workflow/gate-handler.test.d.ts +14 -0
- package/dist/workflow/gate-handler.test.d.ts.map +1 -0
- package/dist/workflow/gate-handler.test.js +543 -0
- package/dist/workflow/gate-handler.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/generic-handoff.d.ts +46 -0
- package/{packages/core/dist → dist}/workflow/generic-handoff.d.ts.map +1 -1
- package/{packages/core/dist → dist}/workflow/generic-handoff.js +53 -0
- package/{packages/core/dist → dist}/workflow/generic-handoff.js.map +1 -1
- package/{packages/core/dist → dist}/workflow/generic-handoff.test.js +2 -2
- package/{packages/core/dist → dist}/workflow/generic-handoff.test.js.map +1 -1
- package/dist/workflow/index.d.ts +16 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +24 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/session-state.d.ts +92 -0
- package/dist/workflow/session-state.d.ts.map +1 -0
- package/dist/workflow/session-state.js +198 -0
- package/dist/workflow/session-state.js.map +1 -0
- package/dist/workflow/session-state.test.d.ts +8 -0
- package/dist/workflow/session-state.test.d.ts.map +1 -0
- package/dist/workflow/session-state.test.js +551 -0
- package/dist/workflow/session-state.test.js.map +1 -0
- package/dist/workflow/step-parser.d.ts +45 -0
- package/dist/workflow/step-parser.d.ts.map +1 -0
- package/dist/workflow/step-parser.js +147 -0
- package/dist/workflow/step-parser.js.map +1 -0
- package/dist/workflow/step-parser.test.d.ts +14 -0
- package/dist/workflow/step-parser.test.d.ts.map +1 -0
- package/dist/workflow/step-parser.test.js +470 -0
- package/dist/workflow/step-parser.test.js.map +1 -0
- package/dist/workflow/trimodal.d.ts +86 -0
- package/dist/workflow/trimodal.d.ts.map +1 -0
- package/dist/workflow/trimodal.js +118 -0
- package/dist/workflow/trimodal.js.map +1 -0
- package/dist/workflow/trimodal.test.d.ts +11 -0
- package/dist/workflow/trimodal.test.d.ts.map +1 -0
- package/dist/workflow/trimodal.test.js +395 -0
- package/dist/workflow/trimodal.test.js.map +1 -0
- package/dist/workflow/variable-resolver.d.ts +67 -0
- package/dist/workflow/variable-resolver.d.ts.map +1 -0
- package/dist/workflow/variable-resolver.js +156 -0
- package/dist/workflow/variable-resolver.js.map +1 -0
- package/dist/workflow/variable-resolver.test.d.ts +14 -0
- package/dist/workflow/variable-resolver.test.d.ts.map +1 -0
- package/dist/workflow/variable-resolver.test.js +400 -0
- package/dist/workflow/variable-resolver.test.js.map +1 -0
- package/dist/workflow/workflow-executor.d.ts +163 -0
- package/dist/workflow/workflow-executor.d.ts.map +1 -0
- package/dist/workflow/workflow-executor.js +197 -0
- package/dist/workflow/workflow-executor.js.map +1 -0
- package/dist/workflow/workflow-executor.test.d.ts +8 -0
- package/dist/workflow/workflow-executor.test.d.ts.map +1 -0
- package/dist/workflow/workflow-executor.test.js +444 -0
- package/dist/workflow/workflow-executor.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-loader.test.js +5 -5
- package/dist/workflow/workflow-loader.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-migration.test.js +8 -9
- package/{packages/core/dist → dist}/workflow/workflow-migration.test.js.map +1 -1
- package/dist/workflow/workflow-permissions.d.ts +55 -0
- package/dist/workflow/workflow-permissions.d.ts.map +1 -0
- package/dist/workflow/workflow-permissions.js +64 -0
- package/dist/workflow/workflow-permissions.js.map +1 -0
- package/dist/workflow/workflow-permissions.test.d.ts +15 -0
- package/dist/workflow/workflow-permissions.test.d.ts.map +1 -0
- package/dist/workflow/workflow-permissions.test.js +301 -0
- package/dist/workflow/workflow-permissions.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts +61 -2
- package/dist/workflow/workflow-schema.d.ts.map +1 -0
- package/dist/workflow/workflow-schema.js +454 -0
- package/dist/workflow/workflow-schema.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-schema.test.js +6 -6
- package/{packages/core/dist → dist}/workflow/workflow-schema.test.js.map +1 -1
- package/dist/workflow/workflow-stepped-schema.test.d.ts +18 -0
- package/dist/workflow/workflow-stepped-schema.test.d.ts.map +1 -0
- package/dist/workflow/workflow-stepped-schema.test.js +608 -0
- package/dist/workflow/workflow-stepped-schema.test.js.map +1 -0
- package/package.json +38 -32
- package/README.md +0 -301
- package/packages/core/dist/cli/commands/cyclist.js.map +0 -1
- package/packages/core/dist/cli/commands/cyclist.test.js.map +0 -1
- package/packages/core/dist/cli/commands/update.js.map +0 -1
- package/packages/core/dist/cli/utils/constants.d.ts.map +0 -1
- package/packages/core/dist/cli/utils/themes.js.map +0 -1
- package/packages/core/dist/cli/utils/themes.test.d.ts +0 -12
- package/packages/core/dist/cli/utils/themes.test.js.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.d.ts +0 -10
- package/packages/core/dist/scripts/generate-all-faces.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.js +0 -256
- package/packages/core/dist/scripts/generate-all-faces.js.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts +0 -17
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.test.js +0 -372
- package/packages/core/dist/scripts/generate-all-faces.test.js.map +0 -1
- package/packages/core/dist/scripts/generate-ascii-face.d.ts +0 -52
- package/packages/core/dist/scripts/generate-ascii-face.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-ascii-face.js +0 -155
- package/packages/core/dist/scripts/generate-ascii-face.js.map +0 -1
- package/packages/core/dist/scripts/generate-face.d.ts +0 -52
- package/packages/core/dist/scripts/generate-face.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-face.js +0 -199
- package/packages/core/dist/scripts/generate-face.js.map +0 -1
- package/packages/core/dist/scripts/generate-face.test.d.ts +0 -13
- package/packages/core/dist/scripts/generate-face.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-face.test.js +0 -301
- package/packages/core/dist/scripts/generate-face.test.js.map +0 -1
- package/packages/core/dist/scripts/generate-spider.js.map +0 -1
- package/packages/core/dist/scripts/generate-spider.test.js.map +0 -1
- package/packages/core/dist/workflow/workflow-loader.test.js.map +0 -1
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +0 -1
- package/packages/core/dist/workflow/workflow-schema.js +0 -230
- package/packages/core/dist/workflow/workflow-schema.js.map +0 -1
- package/pennyfarthing-dist/agents/README.md +0 -411
- package/pennyfarthing-dist/agents/architect.md +0 -185
- package/pennyfarthing-dist/agents/dev.md +0 -239
- package/pennyfarthing-dist/agents/devops.md +0 -197
- package/pennyfarthing-dist/agents/generic-handoff.md +0 -454
- package/pennyfarthing-dist/agents/generic-sm-finish.md +0 -261
- package/pennyfarthing-dist/agents/generic-sm-setup.md +0 -214
- package/pennyfarthing-dist/agents/orchestrator.md +0 -333
- package/pennyfarthing-dist/agents/pm.md +0 -164
- package/pennyfarthing-dist/agents/reviewer-preflight.md +0 -182
- package/pennyfarthing-dist/agents/reviewer.md +0 -335
- package/pennyfarthing-dist/agents/sm-file-summary.md +0 -109
- package/pennyfarthing-dist/agents/sm-handoff.md +0 -97
- package/pennyfarthing-dist/agents/sm.md +0 -509
- package/pennyfarthing-dist/agents/tea.md +0 -205
- package/pennyfarthing-dist/agents/tech-writer.md +0 -148
- package/pennyfarthing-dist/agents/testing-runner.md +0 -423
- package/pennyfarthing-dist/agents/ux-designer.md +0 -158
- package/pennyfarthing-dist/agents/workflow-status-check.md +0 -332
- package/pennyfarthing-dist/commands/architect.md +0 -62
- package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
- package/pennyfarthing-dist/commands/benchmark.md +0 -467
- package/pennyfarthing-dist/commands/brainstorm.md +0 -91
- package/pennyfarthing-dist/commands/check.md +0 -156
- package/pennyfarthing-dist/commands/chore.md +0 -178
- package/pennyfarthing-dist/commands/close-epic.md +0 -136
- package/pennyfarthing-dist/commands/continue-session.md +0 -184
- package/pennyfarthing-dist/commands/create-branches-from-story.md +0 -374
- package/pennyfarthing-dist/commands/create-theme.md +0 -29
- package/pennyfarthing-dist/commands/dev.md +0 -60
- package/pennyfarthing-dist/commands/devops.md +0 -59
- package/pennyfarthing-dist/commands/git-cleanup.md +0 -340
- package/pennyfarthing-dist/commands/health-check.md +0 -108
- package/pennyfarthing-dist/commands/help.md +0 -264
- package/pennyfarthing-dist/commands/job-fair.md +0 -102
- package/pennyfarthing-dist/commands/list-themes.md +0 -17
- package/pennyfarthing-dist/commands/new-work.md +0 -127
- package/pennyfarthing-dist/commands/orchestrator.md +0 -56
- package/pennyfarthing-dist/commands/parallel-work.md +0 -71
- package/pennyfarthing-dist/commands/party-mode.md +0 -67
- package/pennyfarthing-dist/commands/permissions.md +0 -193
- package/pennyfarthing-dist/commands/pm.md +0 -60
- package/pennyfarthing-dist/commands/prime.md +0 -140
- package/pennyfarthing-dist/commands/release.md +0 -58
- package/pennyfarthing-dist/commands/repo-status.md +0 -49
- package/pennyfarthing-dist/commands/retro.md +0 -200
- package/pennyfarthing-dist/commands/reviewer.md +0 -64
- package/pennyfarthing-dist/commands/run-ci.md +0 -116
- package/pennyfarthing-dist/commands/set-theme.md +0 -52
- package/pennyfarthing-dist/commands/show-theme.md +0 -21
- package/pennyfarthing-dist/commands/sm.md +0 -70
- package/pennyfarthing-dist/commands/solo.md +0 -411
- package/pennyfarthing-dist/commands/sprint-planning.md +0 -109
- package/pennyfarthing-dist/commands/start-epic.md +0 -156
- package/pennyfarthing-dist/commands/sync-epic-to-jira.md +0 -184
- package/pennyfarthing-dist/commands/sync-work-with-sprint.md +0 -376
- package/pennyfarthing-dist/commands/tea.md +0 -63
- package/pennyfarthing-dist/commands/tech-writer.md +0 -53
- package/pennyfarthing-dist/commands/theme-maker.md +0 -671
- package/pennyfarthing-dist/commands/update-domain-docs.md +0 -83
- package/pennyfarthing-dist/commands/ux-designer.md +0 -62
- package/pennyfarthing-dist/commands/work.md +0 -111
- package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +0 -480
- package/pennyfarthing-dist/guides/AGENT-SCOPES.md +0 -201
- package/pennyfarthing-dist/guides/HOOKS.md +0 -230
- package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +0 -338
- package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +0 -193
- package/pennyfarthing-dist/guides/agent-template-strategic.md +0 -148
- package/pennyfarthing-dist/guides/agent-template-tactical.md +0 -162
- package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +0 -746
- package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +0 -574
- package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +0 -488
- package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +0 -402
- package/pennyfarthing-dist/guides/permission-protocol.md +0 -188
- package/pennyfarthing-dist/guides/persona-loading.md +0 -46
- package/pennyfarthing-dist/guides/persona-system.md +0 -294
- package/pennyfarthing-dist/guides/shared-agent-behavior.md +0 -388
- package/pennyfarthing-dist/guides/shared-context.md +0 -147
- package/pennyfarthing-dist/guides/strategic-agent-behavior.md +0 -348
- package/pennyfarthing-dist/guides/tactical-agent-behavior.md +0 -1041
- package/pennyfarthing-dist/guides/workflow-schema.md +0 -195
- package/pennyfarthing-dist/guides/worktree-mode.md +0 -113
- package/pennyfarthing-dist/output-styles/teaching.md +0 -33
- package/pennyfarthing-dist/output-styles/terse.md +0 -20
- package/pennyfarthing-dist/output-styles/verbose.md +0 -28
- package/pennyfarthing-dist/personas/themes/1984.yaml +0 -312
- package/pennyfarthing-dist/personas/themes/a-team.yaml +0 -207
- package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/all-stars.yaml +0 -332
- package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +0 -306
- package/pennyfarthing-dist/personas/themes/arcane.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +0 -331
- package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/babylon-5.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/black-sails.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +0 -295
- package/pennyfarthing-dist/personas/themes/bobiverse.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +0 -327
- package/pennyfarthing-dist/personas/themes/catch-22.yaml +0 -316
- package/pennyfarthing-dist/personas/themes/classical-composers.yaml +0 -310
- package/pennyfarthing-dist/personas/themes/control.yaml +0 -197
- package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +0 -323
- package/pennyfarthing-dist/personas/themes/deadwood.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/dickens.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/discworld.yaml +0 -332
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +0 -290
- package/pennyfarthing-dist/personas/themes/don-quixote.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/dune.yaml +0 -307
- package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/fargo.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/film-auteurs.yaml +0 -312
- package/pennyfarthing-dist/personas/themes/firefly.yaml +0 -328
- package/pennyfarthing-dist/personas/themes/foundation.yaml +0 -290
- package/pennyfarthing-dist/personas/themes/futurama.yaml +0 -321
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +0 -290
- package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +0 -243
- package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +0 -308
- package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +0 -308
- package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/hannibal.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +0 -324
- package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +0 -291
- package/pennyfarthing-dist/personas/themes/historical-figures.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +0 -331
- package/pennyfarthing-dist/personas/themes/house-md.yaml +0 -321
- package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/jane-austen.yaml +0 -287
- package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/justified.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +0 -219
- package/pennyfarthing-dist/personas/themes/les-miserables.yaml +0 -299
- package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +0 -334
- package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +0 -334
- package/pennyfarthing-dist/personas/themes/mad-max.yaml +0 -355
- package/pennyfarthing-dist/personas/themes/mad-men.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/mash.yaml +0 -334
- package/pennyfarthing-dist/personas/themes/mass-effect.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/military-commanders.yaml +0 -306
- package/pennyfarthing-dist/personas/themes/moby-dick.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/monty-python.yaml +0 -303
- package/pennyfarthing-dist/personas/themes/neuromancer.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +0 -329
- package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +0 -242
- package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +0 -298
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +0 -220
- package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/rome.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/russian-masters.yaml +0 -318
- package/pennyfarthing-dist/personas/themes/sandman.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/shakespeare.yaml +0 -301
- package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/snow-crash.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -230
- package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +0 -210
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +0 -303
- package/pennyfarthing-dist/personas/themes/succession.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/superfriends.yaml +0 -208
- package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +0 -236
- package/pennyfarthing-dist/personas/themes/the-americans.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-crown.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +0 -213
- package/pennyfarthing-dist/personas/themes/the-good-place.yaml +0 -322
- package/pennyfarthing-dist/personas/themes/the-matrix.yaml +0 -353
- package/pennyfarthing-dist/personas/themes/the-odyssey.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-office.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +0 -308
- package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-wire.yaml +0 -311
- package/pennyfarthing-dist/personas/themes/the-witcher.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/twin-peaks.yaml +0 -302
- package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/watchmen.yaml +0 -291
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +0 -291
- package/pennyfarthing-dist/personas/themes/world-explorers.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +0 -307
- package/pennyfarthing-dist/personas/themes/x-files.yaml +0 -302
- package/pennyfarthing-dist/scripts/add-short-names.mjs +0 -264
- package/pennyfarthing-dist/scripts/agent-session.sh +0 -367
- package/pennyfarthing-dist/scripts/check-context.sh +0 -187
- package/pennyfarthing-dist/scripts/check.sh +0 -497
- package/pennyfarthing-dist/scripts/deploy.sh +0 -284
- package/pennyfarthing-dist/scripts/doctor-dogfood.sh +0 -395
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -61
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -66
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -35
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -166
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -50
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -71
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -54
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -98
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -59
- package/pennyfarthing-dist/scripts/install-git-hooks.sh +0 -91
- package/pennyfarthing-dist/scripts/prime.sh +0 -161
- package/pennyfarthing-dist/scripts/release.sh +0 -198
- package/pennyfarthing-dist/scripts/repo-utils.sh +0 -778
- package/pennyfarthing-dist/scripts/run-ci.sh +0 -219
- package/pennyfarthing-dist/scripts/run.sh +0 -65
- package/pennyfarthing-dist/scripts/statusline.sh +0 -264
- package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -582
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -107
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -597
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -514
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -517
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -331
- package/pennyfarthing-dist/scripts/uninstall.sh +0 -271
- package/pennyfarthing-dist/scripts/utils/background-tasks.sh +0 -177
- package/pennyfarthing-dist/scripts/utils/check-status.sh +0 -251
- package/pennyfarthing-dist/scripts/utils/checkpoint.sh +0 -136
- package/pennyfarthing-dist/scripts/utils/common.sh +0 -157
- package/pennyfarthing-dist/scripts/utils/create-feature-branches.sh +0 -230
- package/pennyfarthing-dist/scripts/utils/file-lock.sh +0 -269
- package/pennyfarthing-dist/scripts/utils/find-related-work.sh +0 -231
- package/pennyfarthing-dist/scripts/utils/find-root.sh +0 -33
- package/pennyfarthing-dist/scripts/utils/generate-skill-docs.sh +0 -110
- package/pennyfarthing-dist/scripts/utils/git-status-all.sh +0 -127
- package/pennyfarthing-dist/scripts/utils/ground-truth-judge.py +0 -289
- package/pennyfarthing-dist/scripts/utils/jira/jira-lib.mjs +0 -443
- package/pennyfarthing-dist/scripts/utils/jira/jira-sync-story.mjs +0 -208
- package/pennyfarthing-dist/scripts/utils/jira/jira-sync.mjs +0 -198
- package/pennyfarthing-dist/scripts/utils/jira-claim-story.sh +0 -162
- package/pennyfarthing-dist/scripts/utils/jira-lib.sh +0 -463
- package/pennyfarthing-dist/scripts/utils/jira-sync-story.sh +0 -8
- package/pennyfarthing-dist/scripts/utils/jira-sync.sh +0 -8
- package/pennyfarthing-dist/scripts/utils/log-skill-usage.sh +0 -74
- package/pennyfarthing-dist/scripts/utils/logging.sh +0 -186
- package/pennyfarthing-dist/scripts/utils/repo-scan.sh +0 -141
- package/pennyfarthing-dist/scripts/utils/retry.sh +0 -76
- package/pennyfarthing-dist/scripts/utils/run-timestamp.sh +0 -7
- package/pennyfarthing-dist/scripts/utils/session-cleanup.sh +0 -319
- package/pennyfarthing-dist/scripts/utils/skill-usage-report.sh +0 -193
- package/pennyfarthing-dist/scripts/utils/sprint-common.sh +0 -286
- package/pennyfarthing-dist/scripts/utils/sprint-metrics.sh +0 -241
- package/pennyfarthing-dist/scripts/utils/swebench-judge.py +0 -400
- package/pennyfarthing-dist/scripts/utils/sync-epic-to-jira.sh +0 -16
- package/pennyfarthing-dist/scripts/utils/test-setup.sh +0 -337
- package/pennyfarthing-dist/scripts/utils/validate-subagent-frontmatter.sh +0 -160
- package/pennyfarthing-dist/scripts/worktree-manager.sh +0 -498
- package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +0 -236
- package/pennyfarthing-dist/skills/changelog/SKILL.md +0 -367
- package/pennyfarthing-dist/skills/code-review/SKILL.md +0 -168
- package/pennyfarthing-dist/skills/context-engineering/SKILL.md +0 -268
- package/pennyfarthing-dist/skills/cyclist/SKILL.md +0 -171
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -421
- package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -258
- package/pennyfarthing-dist/skills/jira/SKILL.md +0 -281
- package/pennyfarthing-dist/skills/judge/SKILL.md +0 -524
- package/pennyfarthing-dist/skills/just/SKILL.md +0 -160
- package/pennyfarthing-dist/skills/mermaid/SKILL.md +0 -240
- package/pennyfarthing-dist/skills/otel/skill.md +0 -222
- package/pennyfarthing-dist/skills/permissions/skill.md +0 -172
- package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -173
- package/pennyfarthing-dist/skills/skill-registry.schema.json +0 -102
- package/pennyfarthing-dist/skills/skill-registry.yaml +0 -335
- package/pennyfarthing-dist/skills/sprint-context/SKILL.md +0 -120
- package/pennyfarthing-dist/skills/story-management/SKILL.md +0 -208
- package/pennyfarthing-dist/skills/testing/SKILL.md +0 -99
- package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +0 -124
- package/pennyfarthing-dist/skills/theme/skill.md +0 -129
- package/pennyfarthing-dist/skills/theme-creation/SKILL.md +0 -169
- package/pennyfarthing-dist/skills/workflow/SKILL.md +0 -160
- package/pennyfarthing-dist/skills/yq/SKILL.md +0 -264
- package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +0 -187
- package/pennyfarthing-dist/templates/LEADERBOARD.template.md +0 -59
- package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -276
- package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +0 -61
- package/pennyfarthing-dist/templates/persona-config.yaml.template +0 -22
- package/pennyfarthing-dist/templates/preferences.yaml.template +0 -15
- package/pennyfarthing-dist/templates/settings.local.json.template +0 -90
- package/pennyfarthing-dist/templates/setup-env.sh.template +0 -18
- package/pennyfarthing-dist/templates/shared-context.md.template +0 -70
- package/pennyfarthing-dist/templates/sidecar/decisions.md.template +0 -40
- package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +0 -37
- package/pennyfarthing-dist/templates/sidecar/patterns.md.template +0 -34
- package/pennyfarthing-dist/workflows/agent-docs.yaml +0 -70
- package/pennyfarthing-dist/workflows/bdd.yaml +0 -58
- package/pennyfarthing-dist/workflows/tdd.yaml +0 -50
- package/pennyfarthing-dist/workflows/trivial.yaml +0 -40
- /package/{packages/core/bin → bin}/pennyfarthing.js +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.js +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.js +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/index.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/index.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/index.js +0 -0
- /package/{packages/core/dist → dist}/bmad/index.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.js +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/update.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.js +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/index.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/index.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/index.js +0 -0
- /package/{packages/core/dist → dist}/cli/index.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.js +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/workspace.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/workspace.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/index.d.ts +0 -0
- /package/{packages/core/dist → dist}/permissions/index.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/index.js +0 -0
- /package/{packages/core/dist → dist}/permissions/index.js.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.js +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.js.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.js +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.js +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-handoff.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-handoff.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.js +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.js +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.js +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts.map +0 -0
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
# Agentic Patterns Skill
|
|
2
|
-
|
|
3
|
-
**Purpose:** Core reasoning patterns for building effective LLM agents.
|
|
4
|
-
|
|
5
|
-
**Use when:** Designing agent behavior, debugging agent failures, improving agent reliability.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Core Reasoning Patterns
|
|
10
|
-
|
|
11
|
-
### 1. ReAct (Reasoning and Acting)
|
|
12
|
-
|
|
13
|
-
The foundational agentic loop. Combines chain-of-thought with tool use.
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
THOUGHT: What am I trying to accomplish? What do I know?
|
|
17
|
-
ACTION: Execute tool/command based on reasoning
|
|
18
|
-
OBSERVATION: What was the result? Did it match expectations?
|
|
19
|
-
THOUGHT: Based on observation, what next?
|
|
20
|
-
... repeat until goal achieved
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**Why it works:** Grounds LLM outputs in real observations. Reduces hallucinations.
|
|
24
|
-
|
|
25
|
-
**When to use:** Most tasks. This is the default pattern.
|
|
26
|
-
|
|
27
|
-
**Example:**
|
|
28
|
-
```
|
|
29
|
-
THOUGHT: I need to find where authentication is handled
|
|
30
|
-
ACTION: grep -r "authenticate" --include="*.go"
|
|
31
|
-
OBSERVATION: Found 3 files: auth.go, middleware.go, handlers.go
|
|
32
|
-
THOUGHT: middleware.go likely has the auth middleware, let me read it
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### 2. Plan-and-Execute
|
|
36
|
-
|
|
37
|
-
Decompose complex goals into sub-tasks before acting.
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
1. PLAN: Break goal into discrete steps
|
|
41
|
-
2. EXECUTE: Work through each step
|
|
42
|
-
3. VERIFY: Check each step succeeded before moving on
|
|
43
|
-
4. ADJUST: Replan if something fails
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Why it works:** Prevents getting lost in complex tasks. Makes progress visible.
|
|
47
|
-
|
|
48
|
-
**When to use:** Multi-step tasks, unfamiliar codebases, architectural changes.
|
|
49
|
-
|
|
50
|
-
**Example:**
|
|
51
|
-
```
|
|
52
|
-
PLAN for "Add user authentication":
|
|
53
|
-
1. Check existing auth patterns in codebase
|
|
54
|
-
2. Design auth middleware
|
|
55
|
-
3. Implement token validation
|
|
56
|
-
4. Add protected routes
|
|
57
|
-
5. Write tests
|
|
58
|
-
6. Update documentation
|
|
59
|
-
|
|
60
|
-
Now executing step 1...
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### 3. Self-Reflection
|
|
64
|
-
|
|
65
|
-
Evaluate own outputs before presenting them.
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
1. GENERATE: Produce initial output
|
|
69
|
-
2. CRITIQUE: What could be wrong? What did I assume?
|
|
70
|
-
3. REFINE: Improve based on critique
|
|
71
|
-
4. PRESENT: Only after reflection
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
**Why it works:** Catches errors before they propagate. Improves quality.
|
|
75
|
-
|
|
76
|
-
**When to use:** Code generation, architectural decisions, any output that matters.
|
|
77
|
-
|
|
78
|
-
**Example:**
|
|
79
|
-
```
|
|
80
|
-
GENERATED: Function to validate email
|
|
81
|
-
CRITIQUE: Did I handle edge cases? Empty string? Unicode?
|
|
82
|
-
REFINE: Add null check, use proper regex, handle IDN domains
|
|
83
|
-
PRESENT: Here's the validated function...
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Confidence and Uncertainty
|
|
89
|
-
|
|
90
|
-
### Confidence Levels
|
|
91
|
-
|
|
92
|
-
| Level | Indicators | Action |
|
|
93
|
-
|-------|-----------|--------|
|
|
94
|
-
| HIGH (proceed) | Matches known patterns, clear requirements, similar past success | Act autonomously |
|
|
95
|
-
| MEDIUM (verify) | Some unknowns, first time for this pattern, could break things | Ask before risky actions |
|
|
96
|
-
| LOW (ask) | Architectural change, security-sensitive, deleting files | Always ask user |
|
|
97
|
-
|
|
98
|
-
### Expressing Uncertainty
|
|
99
|
-
|
|
100
|
-
When uncertain, SAY SO:
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
GOOD: "I'm not sure if this is the right approach. Here's my reasoning..."
|
|
104
|
-
GOOD: "I found two possible solutions. Let me explain the tradeoffs..."
|
|
105
|
-
BAD: [silently picks one approach without mentioning alternatives]
|
|
106
|
-
BAD: [confidently states something without verifying]
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Confidence Calibration
|
|
110
|
-
|
|
111
|
-
Before acting, ask yourself:
|
|
112
|
-
1. Have I seen this pattern before? (in skills, sidecars, or this session)
|
|
113
|
-
2. What could go wrong?
|
|
114
|
-
3. Is this reversible?
|
|
115
|
-
4. Would a senior engineer want to review this?
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## Error Recovery
|
|
120
|
-
|
|
121
|
-
### The Retry Pattern
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
1. ATTEMPT: Try the action
|
|
125
|
-
2. OBSERVE: Did it succeed?
|
|
126
|
-
3. DIAGNOSE: If failed, why?
|
|
127
|
-
4. ADJUST: Modify approach based on diagnosis
|
|
128
|
-
5. RETRY: Max 2 retries with different approaches
|
|
129
|
-
6. ESCALATE: If still failing, ask user
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Graceful Degradation
|
|
133
|
-
|
|
134
|
-
When stuck:
|
|
135
|
-
1. **Never silently fail.** Always report what happened.
|
|
136
|
-
2. **Provide context.** What were you trying to do? What went wrong?
|
|
137
|
-
3. **Suggest alternatives.** "I couldn't do X, but I could try Y instead..."
|
|
138
|
-
4. **Ask for help.** "I'm blocked on Z. Can you help?"
|
|
139
|
-
|
|
140
|
-
### Common Failure Modes
|
|
141
|
-
|
|
142
|
-
| Failure | Recovery |
|
|
143
|
-
|---------|----------|
|
|
144
|
-
| Tool returned error | Read error message, adjust inputs, retry |
|
|
145
|
-
| Unexpected output | Verify assumptions, try different approach |
|
|
146
|
-
| Stuck in loop | Stop, reflect, try fundamentally different approach |
|
|
147
|
-
| Context exhaustion | Summarize progress, ask user for direction |
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
## Multi-Agent Coordination
|
|
152
|
-
|
|
153
|
-
### Handoff Patterns
|
|
154
|
-
|
|
155
|
-
When handing off to another agent:
|
|
156
|
-
|
|
157
|
-
1. **Write before you speak.** Update session file BEFORE saying "ready for X"
|
|
158
|
-
2. **Summarize, don't dump.** Pass key findings, not full context
|
|
159
|
-
3. **State expectations.** What should the next agent do?
|
|
160
|
-
4. **Verify handoff.** Confirm the update was written
|
|
161
|
-
|
|
162
|
-
### State Synchronization
|
|
163
|
-
|
|
164
|
-
**Session file is source of truth.** Always:
|
|
165
|
-
- Read session file on activation
|
|
166
|
-
- Write your assessment before handoff
|
|
167
|
-
- Verify what you wrote is actually in the file
|
|
168
|
-
|
|
169
|
-
### Conflict Resolution
|
|
170
|
-
|
|
171
|
-
If agents disagree (e.g., Reviewer rejects Dev's code):
|
|
172
|
-
1. Reviewer documents specific issues
|
|
173
|
-
2. Dev addresses each issue
|
|
174
|
-
3. Reviewer re-reviews
|
|
175
|
-
4. Repeat until resolved or escalate to user
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## Context Management
|
|
180
|
-
|
|
181
|
-
### Just-in-Time Loading
|
|
182
|
-
|
|
183
|
-
**Don't:** Load all potentially relevant files upfront
|
|
184
|
-
**Do:** Store paths/identifiers, load only when needed
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
WRONG: Read all 50 test files to understand testing patterns
|
|
188
|
-
RIGHT: Read testing skill, then load specific test when implementing
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Context Efficiency
|
|
192
|
-
|
|
193
|
-
- Keep tool results focused (don't read entire files if you need one function)
|
|
194
|
-
- Summarize findings rather than quoting everything
|
|
195
|
-
- Reference file:line instead of copying code
|
|
196
|
-
|
|
197
|
-
### When Context Gets Full
|
|
198
|
-
|
|
199
|
-
1. Summarize progress so far
|
|
200
|
-
2. Identify what's still needed
|
|
201
|
-
3. Ask user if you should continue with fresh context
|
|
202
|
-
4. Or hand off to subagent with focused task
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## Reasoning Mode (Toggleable)
|
|
207
|
-
|
|
208
|
-
**Default:** Quiet mode - follow patterns internally, show only key decisions
|
|
209
|
-
|
|
210
|
-
**Verbose mode:** User says "verbose mode" to enable explicit reasoning
|
|
211
|
-
|
|
212
|
-
When verbose, show:
|
|
213
|
-
```
|
|
214
|
-
THOUGHT: [articulate intent]
|
|
215
|
-
ACTION: [describe tool/command]
|
|
216
|
-
OBSERVATION: [verify result]
|
|
217
|
-
REFLECT: [adjust if needed]
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
When quiet, only show:
|
|
221
|
-
- Key decisions
|
|
222
|
-
- Results
|
|
223
|
-
- Questions/blockers
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
## Key Sources
|
|
228
|
-
|
|
229
|
-
- [Anthropic: Building Effective Agents](https://www.anthropic.com/research/building-effective-agents)
|
|
230
|
-
- [Anthropic: Claude Code Best Practices](https://www.anthropic.com/engineering/claude-code-best-practices)
|
|
231
|
-
- [LangChain: ReAct Pattern](https://blog.langchain.com/react-agent/)
|
|
232
|
-
- [LangChain: Reflection Agents](https://blog.langchain.com/reflection-agents/)
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
**Remember:** The goal is not to follow patterns rigidly, but to THINK before acting, VERIFY results, and ASK when uncertain.
|
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: changelog-management
|
|
3
|
-
description: Maintain changelogs following Keep a Changelog format. Parse git commits with conventional commits conventions and auto-generate release notes.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Changelog Management Skill
|
|
7
|
-
|
|
8
|
-
## When to Use This Skill
|
|
9
|
-
|
|
10
|
-
- Creating release notes
|
|
11
|
-
- Parsing conventional commits for changelog entries
|
|
12
|
-
- Auto-generating changelog sections from git history
|
|
13
|
-
- Managing semantic versioning changes
|
|
14
|
-
- Preparing CHANGELOG.md for releases
|
|
15
|
-
- Documenting breaking changes, features, and fixes
|
|
16
|
-
|
|
17
|
-
## Overview
|
|
18
|
-
|
|
19
|
-
This skill guides changelog management using the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format combined with [Conventional Commits](https://www.conventionalcommits.org/). This approach ensures consistency, enables automation, and provides clear communication about changes.
|
|
20
|
-
|
|
21
|
-
**Project Reference:** Pennyfarthing uses Keep a Changelog format in `/CHANGELOG.md` with semantic versioning.
|
|
22
|
-
|
|
23
|
-
## Keep a Changelog Format Reference
|
|
24
|
-
|
|
25
|
-
The standard structure is:
|
|
26
|
-
|
|
27
|
-
```markdown
|
|
28
|
-
# Changelog
|
|
29
|
-
|
|
30
|
-
All notable changes to [Project] are documented in this file.
|
|
31
|
-
|
|
32
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/),
|
|
33
|
-
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
34
|
-
|
|
35
|
-
## [Unreleased]
|
|
36
|
-
|
|
37
|
-
*No unreleased changes*
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## [1.0.0] - 2024-01-15
|
|
42
|
-
|
|
43
|
-
### Added
|
|
44
|
-
- New user-facing features
|
|
45
|
-
|
|
46
|
-
### Changed
|
|
47
|
-
- Changes in existing functionality
|
|
48
|
-
|
|
49
|
-
### Deprecated
|
|
50
|
-
- Features marked for removal
|
|
51
|
-
|
|
52
|
-
### Removed
|
|
53
|
-
- Removed features
|
|
54
|
-
|
|
55
|
-
### Fixed
|
|
56
|
-
- Bug fixes
|
|
57
|
-
|
|
58
|
-
### Security
|
|
59
|
-
- Security vulnerability fixes
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## [0.9.0] - 2024-01-10
|
|
64
|
-
...
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Guidelines
|
|
68
|
-
|
|
69
|
-
1. **One version per section** - Each release gets its own `## [version] - date` heading
|
|
70
|
-
2. **Semantic versioning** - Follow MAJOR.MINOR.PATCH (e.g., 1.5.3)
|
|
71
|
-
3. **ISO 8601 dates** - Format as YYYY-MM-DD
|
|
72
|
-
4. **Categorized entries** - Group changes by type (Added, Changed, Fixed, etc.)
|
|
73
|
-
5. **Unreleased section** - Always maintain an `[Unreleased]` section at the top for staging changes
|
|
74
|
-
6. **End-user focus** - Write for developers using your project, not your own team
|
|
75
|
-
|
|
76
|
-
### Section Hierarchy
|
|
77
|
-
|
|
78
|
-
- **Added** - New features
|
|
79
|
-
- **Changed** - Changes to existing functionality
|
|
80
|
-
- **Deprecated** - Features soon to be removed (provide migration path)
|
|
81
|
-
- **Removed** - Removed features (finalize deprecations)
|
|
82
|
-
- **Fixed** - Bug fixes
|
|
83
|
-
- **Security** - Vulnerability fixes with patches
|
|
84
|
-
|
|
85
|
-
## Conventional Commits Parsing
|
|
86
|
-
|
|
87
|
-
[Conventional Commits](https://www.conventionalcommits.org/) structure commits to enable automatic changelog generation:
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
<type>[optional scope]: <description>
|
|
91
|
-
|
|
92
|
-
[optional body]
|
|
93
|
-
|
|
94
|
-
[optional footer(s)]
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Types and Changelog Mapping
|
|
98
|
-
|
|
99
|
-
| Commit Type | Changelog Section | Example |
|
|
100
|
-
|-------------|-------------------|---------|
|
|
101
|
-
| `feat:` | Added | `feat: add user authentication` |
|
|
102
|
-
| `fix:` | Fixed | `fix: handle null pointer in parser` |
|
|
103
|
-
| `perf:` | Changed | `perf: optimize database queries` |
|
|
104
|
-
| `docs:` | (skip) | `docs: update README` |
|
|
105
|
-
| `style:` | (skip) | `style: format code` |
|
|
106
|
-
| `refactor:` | (skip) | `refactor: simplify module` |
|
|
107
|
-
| `test:` | (skip) | `test: add unit tests` |
|
|
108
|
-
| `chore:` | (skip) | `chore: update dependencies` |
|
|
109
|
-
| `ci:` | (skip) | `ci: update GitHub Actions` |
|
|
110
|
-
|
|
111
|
-
### Breaking Changes
|
|
112
|
-
|
|
113
|
-
Mark breaking changes with `!` or `BREAKING CHANGE:` footer:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
# Using ! suffix
|
|
117
|
-
feat!: redesign authentication API
|
|
118
|
-
|
|
119
|
-
# Using footer
|
|
120
|
-
feat: change password hashing algorithm
|
|
121
|
-
|
|
122
|
-
BREAKING CHANGE: passwords now require bcrypt hashing
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
These go into the **Changed** or **Removed** section, not Added.
|
|
126
|
-
|
|
127
|
-
## Auto-Generation from Git Commits
|
|
128
|
-
|
|
129
|
-
### Step 1: Get Commits Since Last Tag
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# Find the last tag
|
|
133
|
-
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
134
|
-
|
|
135
|
-
# Get commits since that tag
|
|
136
|
-
if [ -z "$LAST_TAG" ]; then
|
|
137
|
-
git log --format="%H %s" | head -50
|
|
138
|
-
else
|
|
139
|
-
git log "${LAST_TAG}..HEAD" --format="%H %s"
|
|
140
|
-
fi
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Step 2: Parse Conventional Commits
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
# Extract type and description from commits
|
|
147
|
-
git log "${LAST_TAG}..HEAD" --format="%s" | while read line; do
|
|
148
|
-
TYPE=$(echo "$line" | cut -d: -f1)
|
|
149
|
-
DESC=$(echo "$line" | cut -d: -f2- | sed 's/^ //')
|
|
150
|
-
echo "$TYPE: $DESC"
|
|
151
|
-
done
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Step 3: Group by Category
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
# Group features
|
|
158
|
-
git log "${LAST_TAG}..HEAD" --format="%s" | grep "^feat" | sed 's/^feat: /- /'
|
|
159
|
-
|
|
160
|
-
# Group fixes
|
|
161
|
-
git log "${LAST_TAG}..HEAD" --format="%s" | grep "^fix" | sed 's/^fix: /- /'
|
|
162
|
-
|
|
163
|
-
# Group breaking changes
|
|
164
|
-
git log "${LAST_TAG}..HEAD" --format="%B" | grep -A1 "BREAKING CHANGE:" | tail -n +2
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
## Complete Auto-Generation Script
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
#!/bin/bash
|
|
171
|
-
set -euo pipefail
|
|
172
|
-
|
|
173
|
-
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
174
|
-
RANGE="${LAST_TAG:+${LAST_TAG}..HEAD}"
|
|
175
|
-
|
|
176
|
-
echo "## [Unreleased]"
|
|
177
|
-
echo ""
|
|
178
|
-
|
|
179
|
-
# Added (feat commits)
|
|
180
|
-
FEATURES=$(git log ${RANGE:---all} --format="%s" | grep "^feat:" || echo "")
|
|
181
|
-
if [ -n "$FEATURES" ]; then
|
|
182
|
-
echo "### Added"
|
|
183
|
-
echo "$FEATURES" | sed 's/^feat: /- /'
|
|
184
|
-
echo ""
|
|
185
|
-
fi
|
|
186
|
-
|
|
187
|
-
# Fixed (fix commits)
|
|
188
|
-
FIXES=$(git log ${RANGE:---all} --format="%s" | grep "^fix:" || echo "")
|
|
189
|
-
if [ -n "$FIXES" ]; then
|
|
190
|
-
echo "### Fixed"
|
|
191
|
-
echo "$FIXES" | sed 's/^fix: /- /'
|
|
192
|
-
echo ""
|
|
193
|
-
fi
|
|
194
|
-
|
|
195
|
-
# Breaking changes
|
|
196
|
-
BREAKING=$(git log ${RANGE:---all} --format="%B" | grep -A1 "BREAKING CHANGE:" | grep "^-" || echo "")
|
|
197
|
-
if [ -n "$BREAKING" ]; then
|
|
198
|
-
echo "### Changed"
|
|
199
|
-
echo "**Breaking Changes:**"
|
|
200
|
-
echo "$BREAKING"
|
|
201
|
-
echo ""
|
|
202
|
-
fi
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
## Version Bump Patterns
|
|
206
|
-
|
|
207
|
-
### Semantic Versioning
|
|
208
|
-
|
|
209
|
-
```
|
|
210
|
-
MAJOR.MINOR.PATCH
|
|
211
|
-
|
|
212
|
-
- MAJOR: Incompatible API changes (breaking changes)
|
|
213
|
-
- MINOR: Backward-compatible functionality additions
|
|
214
|
-
- PATCH: Backward-compatible bug fixes
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### Decision Tree
|
|
218
|
-
|
|
219
|
-
```
|
|
220
|
-
Breaking change detected?
|
|
221
|
-
├─ Yes → MAJOR.0.0 (or X+1.0.0 from X.0.0)
|
|
222
|
-
└─ No
|
|
223
|
-
└─ feat: commits present?
|
|
224
|
-
├─ Yes → X.Y+1.0 (minor version bump)
|
|
225
|
-
└─ No → X.Y.Z+1 (patch version bump)
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### Examples
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
# Current version: 1.5.0
|
|
232
|
-
|
|
233
|
-
# Patch release (bug fixes only)
|
|
234
|
-
1.5.1 # fix: memory leak in parser
|
|
235
|
-
|
|
236
|
-
# Minor release (new features, backward-compatible)
|
|
237
|
-
1.6.0 # feat: add config validation, feat: support ENV vars
|
|
238
|
-
|
|
239
|
-
# Major release (breaking changes)
|
|
240
|
-
2.0.0 # feat!: redesign CLI API, BREAKING CHANGE: remove old flags
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
## Release Workflow Example
|
|
244
|
-
|
|
245
|
-
### 1. During Development
|
|
246
|
-
|
|
247
|
-
Maintain `[Unreleased]` section in CHANGELOG.md:
|
|
248
|
-
|
|
249
|
-
```markdown
|
|
250
|
-
## [Unreleased]
|
|
251
|
-
|
|
252
|
-
### Added
|
|
253
|
-
- New dark mode theme
|
|
254
|
-
- User preference persistence
|
|
255
|
-
|
|
256
|
-
### Fixed
|
|
257
|
-
- Memory leak in event handler
|
|
258
|
-
- Incorrect timezone calculations
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
### 2. Prepare Release
|
|
262
|
-
|
|
263
|
-
```bash
|
|
264
|
-
# Determine new version (inspect commits)
|
|
265
|
-
LAST_VERSION="1.5.0"
|
|
266
|
-
COMMITS=$(git log v${LAST_VERSION}..HEAD --format="%s")
|
|
267
|
-
echo "$COMMITS" | grep -q "^feat:" && NEW_VERSION="1.6.0" || NEW_VERSION="1.5.1"
|
|
268
|
-
|
|
269
|
-
echo "Releasing version $NEW_VERSION"
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
### 3. Create Release Section
|
|
273
|
-
|
|
274
|
-
```bash
|
|
275
|
-
# Generate section from commits
|
|
276
|
-
NEW_DATE=$(date +%Y-%m-%d)
|
|
277
|
-
|
|
278
|
-
# Update CHANGELOG.md
|
|
279
|
-
sed -i '' "s/## \[Unreleased\]/## [Unreleased]\n\n*No unreleased changes*\n\n---\n\n## [$NEW_VERSION] - $NEW_DATE/" CHANGELOG.md
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
### 4. Commit and Tag
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
git add CHANGELOG.md VERSION
|
|
286
|
-
git commit -m "chore: bump to version $NEW_VERSION"
|
|
287
|
-
git tag -a "v$NEW_VERSION" -m "Release $NEW_VERSION"
|
|
288
|
-
git push origin main --tags
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
## Integration with /release Command
|
|
292
|
-
|
|
293
|
-
The `/release` command in Pennyfarthing can use this skill for:
|
|
294
|
-
|
|
295
|
-
1. **Auto-detecting new commits** - Run conventional commit analysis since last tag
|
|
296
|
-
2. **Generating changelog sections** - Create properly formatted entries
|
|
297
|
-
3. **Version bumping** - Semantic versioning based on commit types
|
|
298
|
-
4. **Tagging** - Create annotated tags for releases
|
|
299
|
-
|
|
300
|
-
Reference in `/release` command:
|
|
301
|
-
|
|
302
|
-
```markdown
|
|
303
|
-
See the [Changelog Skill](/changelog) for patterns on:
|
|
304
|
-
- Maintaining CHANGELOG.md
|
|
305
|
-
- Parsing conventional commits
|
|
306
|
-
- Auto-generating release notes
|
|
307
|
-
- Version bump decisions
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
## Best Practices
|
|
311
|
-
|
|
312
|
-
1. **Commit message quality** - Enforce conventional commits in CI/CD
|
|
313
|
-
2. **Review before release** - Manual changelog review catches automation gaps
|
|
314
|
-
3. **One changelog file** - Single CHANGELOG.md in project root
|
|
315
|
-
4. **Link to releases** - Provide direct links to tags/release pages
|
|
316
|
-
5. **Backfill old changes** - If starting Keep a Changelog mid-project, document recent versions
|
|
317
|
-
6. **Human-friendly descriptions** - Conventional commits are machine-parseable; enhance for humans
|
|
318
|
-
7. **Changelog in PR reviews** - Ensure PR descriptions clarify what should be in changelog
|
|
319
|
-
|
|
320
|
-
## Tools and Automation
|
|
321
|
-
|
|
322
|
-
### Conventional Commits Linting
|
|
323
|
-
|
|
324
|
-
```bash
|
|
325
|
-
# Install commitlint
|
|
326
|
-
npm install --save-dev @commitlint/config-conventional @commitlint/cli
|
|
327
|
-
|
|
328
|
-
# Configure .commitlintrc.js
|
|
329
|
-
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > .commitlintrc.js
|
|
330
|
-
|
|
331
|
-
# Test a message
|
|
332
|
-
echo "feat: add new feature" | commitlint
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
### Automatic Changelog Generation
|
|
336
|
-
|
|
337
|
-
Tools that auto-generate from commits:
|
|
338
|
-
|
|
339
|
-
- **conventional-changelog** - Node.js package
|
|
340
|
-
- **changie** - Go-based with template support
|
|
341
|
-
- **git-cliff** - Rust-based with flexible templates
|
|
342
|
-
|
|
343
|
-
Example with conventional-changelog:
|
|
344
|
-
|
|
345
|
-
```bash
|
|
346
|
-
npm install --save-dev conventional-changelog-cli
|
|
347
|
-
npx conventional-changelog -p angular -i CHANGELOG.md -s
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
### CI/CD Integration
|
|
351
|
-
|
|
352
|
-
```yaml
|
|
353
|
-
# GitHub Actions example
|
|
354
|
-
- name: Generate Changelog
|
|
355
|
-
run: |
|
|
356
|
-
npx conventional-changelog -p angular -i CHANGELOG.md -s
|
|
357
|
-
git add CHANGELOG.md
|
|
358
|
-
git commit -m "docs: update CHANGELOG" || echo "No changes"
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
## Reference Documentation
|
|
362
|
-
|
|
363
|
-
- **Keep a Changelog:** https://keepachangelog.com/
|
|
364
|
-
- **Conventional Commits:** https://www.conventionalcommits.org/
|
|
365
|
-
- **Semantic Versioning:** https://semver.org/
|
|
366
|
-
- **conventional-changelog:** https://github.com/conventional-changelog/conventional-changelog
|
|
367
|
-
- **Pennyfarthing Release:** `/release` command
|