nitm-ai-dev-toolkit 3.0.15
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/CHANGELOG.md +109 -0
- package/LICENSE +21 -0
- package/README.md +881 -0
- package/bin/cli.js +398 -0
- package/package.json +41 -0
- package/src/monorepo/.agents/rules/ponytail.md +3 -0
- package/src/monorepo/.agents/skills/acli/SKILL.md +424 -0
- package/src/monorepo/.agents/skills/bkt-cli/SKILL.md +374 -0
- package/src/monorepo/.agents/skills/brainstorming/SKILL.md +54 -0
- package/src/monorepo/.agents/skills/code-simplifier/SKILL.md +109 -0
- package/src/monorepo/.agents/skills/debugger/SKILL.md +123 -0
- package/src/monorepo/.agents/skills/dispatching-parallel-agents/SKILL.md +206 -0
- package/src/monorepo/.agents/skills/executing-plans/SKILL.md +76 -0
- package/src/monorepo/.agents/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/src/monorepo/.agents/skills/gh-cli/SKILL.md +461 -0
- package/src/monorepo/.agents/skills/glab-cli/SKILL.md +468 -0
- package/src/monorepo/.agents/skills/issue-tracker/SKILL.md +119 -0
- package/src/monorepo/.agents/skills/linear-cli/SKILL.md +276 -0
- package/src/monorepo/.agents/skills/logging/SKILL.md +393 -0
- package/src/monorepo/.agents/skills/orient-to-recent-work/SKILL.md +43 -0
- package/src/monorepo/.agents/skills/ponytail/SKILL.md +101 -0
- package/src/monorepo/.agents/skills/ponytail-audit/SKILL.md +41 -0
- package/src/monorepo/.agents/skills/ponytail-debt/SKILL.md +44 -0
- package/src/monorepo/.agents/skills/ponytail-gain/SKILL.md +51 -0
- package/src/monorepo/.agents/skills/ponytail-help/SKILL.md +74 -0
- package/src/monorepo/.agents/skills/ponytail-review/SKILL.md +57 -0
- package/src/monorepo/.agents/skills/project-documentation/SKILL.md +425 -0
- package/src/monorepo/.agents/skills/receiving-code-review/SKILL.md +213 -0
- package/src/monorepo/.agents/skills/requesting-code-review/SKILL.md +105 -0
- package/src/monorepo/.agents/skills/requesting-code-review/code-reviewer.md +146 -0
- package/src/monorepo/.agents/skills/security-reviewer/SKILL.md +144 -0
- package/src/monorepo/.agents/skills/subagent-driven-development/SKILL.md +279 -0
- package/src/monorepo/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/src/monorepo/.agents/skills/subagent-driven-development/implementer-prompt.md +78 -0
- package/src/monorepo/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/src/monorepo/.agents/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/src/monorepo/.agents/skills/systematic-debugging/SKILL.md +296 -0
- package/src/monorepo/.agents/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/src/monorepo/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/src/monorepo/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/src/monorepo/.agents/skills/systematic-debugging/find-polluter.sh +63 -0
- package/src/monorepo/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/src/monorepo/.agents/skills/systematic-debugging/test-academic.md +14 -0
- package/src/monorepo/.agents/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/src/monorepo/.agents/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/src/monorepo/.agents/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/src/monorepo/.agents/skills/test-driven-development/SKILL.md +371 -0
- package/src/monorepo/.agents/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/src/monorepo/.agents/skills/using-git-worktrees/SKILL.md +291 -0
- package/src/monorepo/.agents/skills/using-superpowers/SKILL.md +87 -0
- package/src/monorepo/.agents/skills/verification-before-completion/SKILL.md +148 -0
- package/src/monorepo/.agents/skills/writing-plans/SKILL.md +116 -0
- package/src/monorepo/.agents/skills/writing-skills/SKILL.md +655 -0
- package/src/monorepo/.agents/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/src/monorepo/.agents/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/src/monorepo/.agents/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/src/monorepo/.agents/skills/writing-skills/persuasion-principles.md +187 -0
- package/src/monorepo/.agents/skills/writing-skills/render-graphs.js +168 -0
- package/src/monorepo/.agents/skills/writing-skills/testing-skills-with-subagents.md +384 -0
- package/src/monorepo/.claude/agents/admin-portal.agent.md +11 -0
- package/src/monorepo/.claude/agents/api-specialist.agent.md +11 -0
- package/src/monorepo/.claude/agents/backend-architect.agent.md +11 -0
- package/src/monorepo/.claude/agents/documenter.agent.md +11 -0
- package/src/monorepo/.claude/agents/feature-builder.agent.md +23 -0
- package/src/monorepo/.claude/agents/frontend-developer.agent.md +11 -0
- package/src/monorepo/.claude/agents/green.agent.md +12 -0
- package/src/monorepo/.claude/agents/implementer.agent.md +12 -0
- package/src/monorepo/.claude/agents/planner.agent.md +12 -0
- package/src/monorepo/.claude/agents/red.agent.md +12 -0
- package/src/monorepo/.claude/agents/refactor.agent.md +12 -0
- package/src/monorepo/.claude/agents/researcher.agent.md +12 -0
- package/src/monorepo/.claude/agents/reviewer.agent.md +11 -0
- package/src/monorepo/.claude/agents/tdd.agent.md +12 -0
- package/src/monorepo/.claude/agents-snippets/admin-portal.md +90 -0
- package/src/monorepo/.claude/agents-snippets/api-specialist.md +57 -0
- package/src/monorepo/.claude/agents-snippets/backend-architect.md +49 -0
- package/src/monorepo/.claude/agents-snippets/documenter.md +58 -0
- package/src/monorepo/.claude/agents-snippets/feature-builder.md +49 -0
- package/src/monorepo/.claude/agents-snippets/frontend-developer.md +49 -0
- package/src/monorepo/.claude/agents-snippets/green.md +18 -0
- package/src/monorepo/.claude/agents-snippets/implementer.md +31 -0
- package/src/monorepo/.claude/agents-snippets/planner.md +40 -0
- package/src/monorepo/.claude/agents-snippets/red.md +14 -0
- package/src/monorepo/.claude/agents-snippets/refactor.md +22 -0
- package/src/monorepo/.claude/agents-snippets/researcher.md +43 -0
- package/src/monorepo/.claude/agents-snippets/reviewer.md +83 -0
- package/src/monorepo/.claude/agents-snippets/tdd.md +18 -0
- package/src/monorepo/.claude/commands/assign-tasks.md +13 -0
- package/src/monorepo/.claude/commands/bootstrap-patch.md +15 -0
- package/src/monorepo/.claude/commands/bootstrap-upgrade.md +15 -0
- package/src/monorepo/.claude/commands/bootstrap.md +15 -0
- package/src/monorepo/.claude/commands/commit-push.md +13 -0
- package/src/monorepo/.claude/commands/constitution.md +15 -0
- package/src/monorepo/.claude/commands/create-skill.md +15 -0
- package/src/monorepo/.claude/commands/implement-feature.md +15 -0
- package/src/monorepo/.claude/commands/implement-fixes.md +15 -0
- package/src/monorepo/.claude/commands/implement.md +15 -0
- package/src/monorepo/.claude/commands/plan.md +15 -0
- package/src/monorepo/.claude/commands/playwright-test.md +13 -0
- package/src/monorepo/.claude/commands/ponytail-audit.md +15 -0
- package/src/monorepo/.claude/commands/ponytail-debt.md +15 -0
- package/src/monorepo/.claude/commands/ponytail-gain.md +15 -0
- package/src/monorepo/.claude/commands/ponytail-help.md +15 -0
- package/src/monorepo/.claude/commands/ponytail-review.md +15 -0
- package/src/monorepo/.claude/commands/ponytail.md +15 -0
- package/src/monorepo/.claude/commands/release-notes.md +13 -0
- package/src/monorepo/.claude/commands/review-pr.md +15 -0
- package/src/monorepo/.claude/commands/review-staged.md +15 -0
- package/src/monorepo/.claude/commands/review.md +15 -0
- package/src/monorepo/.claude/commands/specify.md +15 -0
- package/src/monorepo/.claude/commands/tasks.md +13 -0
- package/src/monorepo/.claude/prompt-snippets/assign-tasks.md +169 -0
- package/src/monorepo/.claude/prompt-snippets/bootstrap-patch.md +199 -0
- package/src/monorepo/.claude/prompt-snippets/bootstrap-upgrade.md +452 -0
- package/src/monorepo/.claude/prompt-snippets/bootstrap.md +764 -0
- package/src/monorepo/.claude/prompt-snippets/commit-push.md +69 -0
- package/src/monorepo/.claude/prompt-snippets/constitution.md +57 -0
- package/src/monorepo/.claude/prompt-snippets/create-skill.md +490 -0
- package/src/monorepo/.claude/prompt-snippets/implement-feature.md +119 -0
- package/src/monorepo/.claude/prompt-snippets/implement-fixes.md +122 -0
- package/src/monorepo/.claude/prompt-snippets/implement.md +56 -0
- package/src/monorepo/.claude/prompt-snippets/plan.md +67 -0
- package/src/monorepo/.claude/prompt-snippets/playwright-test.md +55 -0
- package/src/monorepo/.claude/prompt-snippets/ponytail-audit.md +5 -0
- package/src/monorepo/.claude/prompt-snippets/ponytail-debt.md +5 -0
- package/src/monorepo/.claude/prompt-snippets/ponytail-gain.md +5 -0
- package/src/monorepo/.claude/prompt-snippets/ponytail-help.md +5 -0
- package/src/monorepo/.claude/prompt-snippets/ponytail-review.md +5 -0
- package/src/monorepo/.claude/prompt-snippets/ponytail.md +5 -0
- package/src/monorepo/.claude/prompt-snippets/release-notes.md +134 -0
- package/src/monorepo/.claude/prompt-snippets/review-pr.md +156 -0
- package/src/monorepo/.claude/prompt-snippets/review-staged.md +35 -0
- package/src/monorepo/.claude/prompt-snippets/review.md +139 -0
- package/src/monorepo/.claude/prompt-snippets/specify.md +51 -0
- package/src/monorepo/.claude/prompt-snippets/tasks.md +108 -0
- package/src/monorepo/.claude/rules/agent-conduct.md +14 -0
- package/src/monorepo/.claude/rules/api-server.md +19 -0
- package/src/monorepo/.claude/rules/coding-standards.md +13 -0
- package/src/monorepo/.claude/rules/component-structure.md +18 -0
- package/src/monorepo/.claude/rules/core-libraries.md +16 -0
- package/src/monorepo/.claude/rules/environment-tooling.md +12 -0
- package/src/monorepo/.claude/rules/logging-comments.md +17 -0
- package/src/monorepo/.claude/rules/logging.md +17 -0
- package/src/monorepo/.claude/rules/orient-to-recent-work.md +13 -0
- package/src/monorepo/.claude/rules/prisma-migrations.md +16 -0
- package/src/monorepo/.claude/rules/project-context.md +14 -0
- package/src/monorepo/.claude/rules/server-client-separation.md +17 -0
- package/src/monorepo/.claude/rules/subagent-workflow.md +14 -0
- package/src/monorepo/.claude/rules/testing-quality.md +19 -0
- package/src/monorepo/.claude/rules/testing.md +16 -0
- package/src/monorepo/.claude/rules/ui-accessibility.md +18 -0
- package/src/monorepo/.claude/rules/version-control.md +14 -0
- package/src/monorepo/.claude/rules/what-to-avoid.md +14 -0
- package/src/monorepo/.claude/rules-snippets/agent-conduct.md +51 -0
- package/src/monorepo/.claude/rules-snippets/api-server.md +5 -0
- package/src/monorepo/.claude/rules-snippets/coding-standards.md +45 -0
- package/src/monorepo/.claude/rules-snippets/component-structure.md +6 -0
- package/src/monorepo/.claude/rules-snippets/core-libraries.md +6 -0
- package/src/monorepo/.claude/rules-snippets/deployment.md +41 -0
- package/src/monorepo/.claude/rules-snippets/documentation.md +210 -0
- package/src/monorepo/.claude/rules-snippets/environment-tooling.md +4 -0
- package/src/monorepo/.claude/rules-snippets/logging-comments.md +4 -0
- package/src/monorepo/.claude/rules-snippets/logging.md +107 -0
- package/src/monorepo/.claude/rules-snippets/patterns.md +134 -0
- package/src/monorepo/.claude/rules-snippets/ponytail.md +24 -0
- package/src/monorepo/.claude/rules-snippets/prisma-migrations.md +6 -0
- package/src/monorepo/.claude/rules-snippets/project-context.md +8 -0
- package/src/monorepo/.claude/rules-snippets/server-client-separation.md +5 -0
- package/src/monorepo/.claude/rules-snippets/subagent-workflow.md +134 -0
- package/src/monorepo/.claude/rules-snippets/testing-quality.md +5 -0
- package/src/monorepo/.claude/rules-snippets/testing.md +42 -0
- package/src/monorepo/.claude/rules-snippets/ui-accessibility.md +5 -0
- package/src/monorepo/.claude/rules-snippets/version-control.md +4 -0
- package/src/monorepo/.claude/rules-snippets/what-to-avoid.md +6 -0
- package/src/monorepo/.claude/rules-snippets/workflows.md +81 -0
- package/src/monorepo/.claude/settings.json +7 -0
- package/src/monorepo/.claude/skills/README.md +50 -0
- package/src/monorepo/.cursor/agents/admin-portal.agent.md +11 -0
- package/src/monorepo/.cursor/agents/api-specialist.agent.md +11 -0
- package/src/monorepo/.cursor/agents/backend-architect.agent.md +11 -0
- package/src/monorepo/.cursor/agents/documenter.agent.md +11 -0
- package/src/monorepo/.cursor/agents/feature-builder.agent.md +11 -0
- package/src/monorepo/.cursor/agents/frontend-developer.agent.md +11 -0
- package/src/monorepo/.cursor/agents/green.agent.md +11 -0
- package/src/monorepo/.cursor/agents/implementer.agent.md +11 -0
- package/src/monorepo/.cursor/agents/planner.agent.md +11 -0
- package/src/monorepo/.cursor/agents/red.agent.md +11 -0
- package/src/monorepo/.cursor/agents/refactor.agent.md +11 -0
- package/src/monorepo/.cursor/agents/researcher.agent.md +11 -0
- package/src/monorepo/.cursor/agents/reviewer.agent.md +11 -0
- package/src/monorepo/.cursor/agents/tdd.agent.md +11 -0
- package/src/monorepo/.cursor/commands/assign-tasks.md +13 -0
- package/src/monorepo/.cursor/commands/bootstrap-patch.md +17 -0
- package/src/monorepo/.cursor/commands/bootstrap-upgrade.md +15 -0
- package/src/monorepo/.cursor/commands/bootstrap.md +17 -0
- package/src/monorepo/.cursor/commands/commit-push.md +15 -0
- package/src/monorepo/.cursor/commands/constitution.md +17 -0
- package/src/monorepo/.cursor/commands/create-skill.md +17 -0
- package/src/monorepo/.cursor/commands/implement-feature.md +17 -0
- package/src/monorepo/.cursor/commands/implement-fixes.md +17 -0
- package/src/monorepo/.cursor/commands/implement.md +17 -0
- package/src/monorepo/.cursor/commands/plan.md +17 -0
- package/src/monorepo/.cursor/commands/playwright-test.md +15 -0
- package/src/monorepo/.cursor/commands/ponytail-audit.md +13 -0
- package/src/monorepo/.cursor/commands/ponytail-debt.md +13 -0
- package/src/monorepo/.cursor/commands/ponytail-gain.md +13 -0
- package/src/monorepo/.cursor/commands/ponytail-help.md +13 -0
- package/src/monorepo/.cursor/commands/ponytail-review.md +13 -0
- package/src/monorepo/.cursor/commands/ponytail.md +13 -0
- package/src/monorepo/.cursor/commands/release-notes.md +15 -0
- package/src/monorepo/.cursor/commands/review-pr.md +17 -0
- package/src/monorepo/.cursor/commands/review-staged.md +10 -0
- package/src/monorepo/.cursor/commands/review.md +17 -0
- package/src/monorepo/.cursor/commands/specify.md +17 -0
- package/src/monorepo/.cursor/commands/tasks.md +15 -0
- package/src/monorepo/.cursor/mcp.json +13 -0
- package/src/monorepo/.cursor/rules/agent-conduct.mdc +11 -0
- package/src/monorepo/.cursor/rules/api-server.mdc +11 -0
- package/src/monorepo/.cursor/rules/coding-standards.mdc +11 -0
- package/src/monorepo/.cursor/rules/component-structure.mdc +11 -0
- package/src/monorepo/.cursor/rules/core-libraries.mdc +11 -0
- package/src/monorepo/.cursor/rules/environment-tooling.mdc +11 -0
- package/src/monorepo/.cursor/rules/logging-comments.mdc +11 -0
- package/src/monorepo/.cursor/rules/logging.mdc +10 -0
- package/src/monorepo/.cursor/rules/orient-to-recent-work.mdc +9 -0
- package/src/monorepo/.cursor/rules/ponytail.mdc +9 -0
- package/src/monorepo/.cursor/rules/prisma-migrations.mdc +11 -0
- package/src/monorepo/.cursor/rules/project-context.mdc +11 -0
- package/src/monorepo/.cursor/rules/server-client-separation.mdc +11 -0
- package/src/monorepo/.cursor/rules/subagent-workflow.mdc +11 -0
- package/src/monorepo/.cursor/rules/testing-quality.mdc +11 -0
- package/src/monorepo/.cursor/rules/ui-accessibility.mdc +11 -0
- package/src/monorepo/.cursor/rules/version-control.mdc +11 -0
- package/src/monorepo/.cursor/rules/what-to-avoid.mdc +11 -0
- package/src/monorepo/.cursor/skills/README.md +50 -0
- package/src/monorepo/.github/agents/admin-portal.agent.md +11 -0
- package/src/monorepo/.github/agents/api-specialist.agent.md +11 -0
- package/src/monorepo/.github/agents/backend-architect.agent.md +11 -0
- package/src/monorepo/.github/agents/documenter.agent.md +11 -0
- package/src/monorepo/.github/agents/feature-builder.agent.md +24 -0
- package/src/monorepo/.github/agents/frontend-developer.agent.md +11 -0
- package/src/monorepo/.github/agents/green.agent.md +12 -0
- package/src/monorepo/.github/agents/implementer.agent.md +12 -0
- package/src/monorepo/.github/agents/planner.agent.md +12 -0
- package/src/monorepo/.github/agents/red.agent.md +12 -0
- package/src/monorepo/.github/agents/refactor.agent.md +12 -0
- package/src/monorepo/.github/agents/researcher.agent.md +12 -0
- package/src/monorepo/.github/agents/reviewer.agent.md +11 -0
- package/src/monorepo/.github/agents/tdd.agent.md +13 -0
- package/src/monorepo/.github/copilot-instructions.md +95 -0
- package/src/monorepo/.github/instructions/agent-conduct.instructions.md +14 -0
- package/src/monorepo/.github/instructions/api-server.instructions.md +14 -0
- package/src/monorepo/.github/instructions/coding-standards.instructions.md +13 -0
- package/src/monorepo/.github/instructions/component-structure.instructions.md +14 -0
- package/src/monorepo/.github/instructions/core-libraries.instructions.md +14 -0
- package/src/monorepo/.github/instructions/deployment.instructions.md +13 -0
- package/src/monorepo/.github/instructions/documentation.instructions.md +14 -0
- package/src/monorepo/.github/instructions/environment-tooling.instructions.md +14 -0
- package/src/monorepo/.github/instructions/logging-comments.instructions.md +14 -0
- package/src/monorepo/.github/instructions/logging.instructions.md +14 -0
- package/src/monorepo/.github/instructions/patterns.instructions.md +14 -0
- package/src/monorepo/.github/instructions/prisma-migrations.instructions.md +14 -0
- package/src/monorepo/.github/instructions/project-context.instructions.md +13 -0
- package/src/monorepo/.github/instructions/server-client-separation.instructions.md +14 -0
- package/src/monorepo/.github/instructions/subagent-workflow.instructions.md +14 -0
- package/src/monorepo/.github/instructions/testing-quality.instructions.md +15 -0
- package/src/monorepo/.github/instructions/testing.instructions.md +14 -0
- package/src/monorepo/.github/instructions/ui-accessibility.instructions.md +14 -0
- package/src/monorepo/.github/instructions/version-control.instructions.md +14 -0
- package/src/monorepo/.github/instructions/what-to-avoid.instructions.md +14 -0
- package/src/monorepo/.github/instructions/workflows.instructions.md +14 -0
- package/src/monorepo/.github/prompts/assign-tasks.prompt.md +14 -0
- package/src/monorepo/.github/prompts/bootstrap-patch.prompt.md +15 -0
- package/src/monorepo/.github/prompts/bootstrap-upgrade.prompt.md +15 -0
- package/src/monorepo/.github/prompts/bootstrap.prompt.md +15 -0
- package/src/monorepo/.github/prompts/commit-push.prompt.md +13 -0
- package/src/monorepo/.github/prompts/constitution.prompt.md +15 -0
- package/src/monorepo/.github/prompts/create-skill.prompt.md +15 -0
- package/src/monorepo/.github/prompts/implement-feature.prompt.md +15 -0
- package/src/monorepo/.github/prompts/implement-fixes.prompt.md +15 -0
- package/src/monorepo/.github/prompts/implement.prompt.md +15 -0
- package/src/monorepo/.github/prompts/plan.prompt.md +15 -0
- package/src/monorepo/.github/prompts/playwright-test.prompt.md +13 -0
- package/src/monorepo/.github/prompts/ponytail-audit.prompt.md +13 -0
- package/src/monorepo/.github/prompts/ponytail-debt.prompt.md +13 -0
- package/src/monorepo/.github/prompts/ponytail-gain.prompt.md +13 -0
- package/src/monorepo/.github/prompts/ponytail-help.prompt.md +13 -0
- package/src/monorepo/.github/prompts/ponytail-review.prompt.md +13 -0
- package/src/monorepo/.github/prompts/ponytail.prompt.md +13 -0
- package/src/monorepo/.github/prompts/release-notes.prompt.md +13 -0
- package/src/monorepo/.github/prompts/review-pr.prompt.md +15 -0
- package/src/monorepo/.github/prompts/review-staged.prompt.md +16 -0
- package/src/monorepo/.github/prompts/review.prompt.md +15 -0
- package/src/monorepo/.github/prompts/specify.prompt.md +15 -0
- package/src/monorepo/.github/prompts/tasks.prompt.md +13 -0
- package/src/monorepo/.github/skills/README.md +36 -0
- package/src/monorepo/.mcp.json +13 -0
- package/src/monorepo/.opencode/agents/admin-portal.md +14 -0
- package/src/monorepo/.opencode/agents/api-specialist.md +14 -0
- package/src/monorepo/.opencode/agents/backend-architect.md +14 -0
- package/src/monorepo/.opencode/agents/documenter.md +14 -0
- package/src/monorepo/.opencode/agents/feature-builder.md +15 -0
- package/src/monorepo/.opencode/agents/frontend-developer.md +14 -0
- package/src/monorepo/.opencode/agents/green.md +14 -0
- package/src/monorepo/.opencode/agents/implementer.md +14 -0
- package/src/monorepo/.opencode/agents/planner.md +14 -0
- package/src/monorepo/.opencode/agents/red.md +14 -0
- package/src/monorepo/.opencode/agents/refactor.md +14 -0
- package/src/monorepo/.opencode/agents/researcher.md +14 -0
- package/src/monorepo/.opencode/agents/reviewer.md +14 -0
- package/src/monorepo/.opencode/agents/tdd.md +15 -0
- package/src/monorepo/.opencode/commands/assign-tasks.md +16 -0
- package/src/monorepo/.opencode/commands/bootstrap-patch.md +18 -0
- package/src/monorepo/.opencode/commands/bootstrap-upgrade.md +18 -0
- package/src/monorepo/.opencode/commands/bootstrap.md +18 -0
- package/src/monorepo/.opencode/commands/commit-push.md +16 -0
- package/src/monorepo/.opencode/commands/constitution.md +18 -0
- package/src/monorepo/.opencode/commands/create-skill.md +16 -0
- package/src/monorepo/.opencode/commands/implement-feature.md +18 -0
- package/src/monorepo/.opencode/commands/implement-fixes.md +20 -0
- package/src/monorepo/.opencode/commands/implement.md +18 -0
- package/src/monorepo/.opencode/commands/plan.md +18 -0
- package/src/monorepo/.opencode/commands/playwright-test.md +16 -0
- package/src/monorepo/.opencode/commands/ponytail-audit.md +10 -0
- package/src/monorepo/.opencode/commands/ponytail-debt.md +10 -0
- package/src/monorepo/.opencode/commands/ponytail-gain.md +10 -0
- package/src/monorepo/.opencode/commands/ponytail-help.md +10 -0
- package/src/monorepo/.opencode/commands/ponytail-review.md +10 -0
- package/src/monorepo/.opencode/commands/ponytail.md +10 -0
- package/src/monorepo/.opencode/commands/release-notes.md +16 -0
- package/src/monorepo/.opencode/commands/review-pr.md +18 -0
- package/src/monorepo/.opencode/commands/review-staged.md +11 -0
- package/src/monorepo/.opencode/commands/review.md +18 -0
- package/src/monorepo/.opencode/commands/specify.md +18 -0
- package/src/monorepo/.opencode/commands/tasks.md +16 -0
- package/src/monorepo/.opencode/opencode.json +9 -0
- package/src/monorepo/.opencode/plugins/ponytail.mjs +79 -0
- package/src/monorepo/.opencode/rules/agent-conduct.md +12 -0
- package/src/monorepo/.opencode/rules/api-server.md +11 -0
- package/src/monorepo/.opencode/rules/coding-standards.md +11 -0
- package/src/monorepo/.opencode/rules/component-structure.md +11 -0
- package/src/monorepo/.opencode/rules/core-libraries.md +11 -0
- package/src/monorepo/.opencode/rules/environment-tooling.md +11 -0
- package/src/monorepo/.opencode/rules/logging-comments.md +11 -0
- package/src/monorepo/.opencode/rules/logging.md +11 -0
- package/src/monorepo/.opencode/rules/ponytail.md +3 -0
- package/src/monorepo/.opencode/rules/prisma-migrations.md +11 -0
- package/src/monorepo/.opencode/rules/project-context.md +11 -0
- package/src/monorepo/.opencode/rules/server-client-separation.md +11 -0
- package/src/monorepo/.opencode/rules/subagent-workflow.md +11 -0
- package/src/monorepo/.opencode/rules/testing-quality.md +11 -0
- package/src/monorepo/.opencode/rules/ui-accessibility.md +11 -0
- package/src/monorepo/.opencode/rules/version-control.md +11 -0
- package/src/monorepo/.opencode/rules/what-to-avoid.md +11 -0
- package/src/monorepo/.vscode/mcp.json +13 -0
- package/src/monorepo/AGENTS.md +367 -0
- package/src/monorepo/CLAUDE.md +63 -0
- package/src/monorepo/README.md +182 -0
- package/src/monorepo/apps/app-template/AGENTS.md +169 -0
- package/src/monorepo/apps/app-template/README.md +77 -0
- package/src/monorepo/docs/api/README.md +82 -0
- package/src/monorepo/docs/architecture/README.md +56 -0
- package/src/monorepo/docs/features/README.md +82 -0
- package/src/monorepo/docs/fixes/README.md +117 -0
- package/src/monorepo/hooks/claude-codex-hooks.json +31 -0
- package/src/monorepo/hooks/copilot-hooks.json +21 -0
- package/src/monorepo/hooks/ponytail-activate.js +91 -0
- package/src/monorepo/hooks/ponytail-config.js +122 -0
- package/src/monorepo/hooks/ponytail-instructions.js +92 -0
- package/src/monorepo/hooks/ponytail-mode-tracker.js +55 -0
- package/src/monorepo/hooks/ponytail-runtime.js +51 -0
- package/src/monorepo/hooks/ponytail-statusline.ps1 +21 -0
- package/src/monorepo/hooks/ponytail-statusline.sh +12 -0
- package/src/monorepo/packages/package-template/README.md +63 -0
- package/src/monorepo/templates/README.md +106 -0
- package/src/monorepo/templates/adr.template.md +156 -0
- package/src/monorepo/templates/complex-fix-plan.template.md +154 -0
- package/src/monorepo/templates/complex-fix-spec.template.md +160 -0
- package/src/monorepo/templates/feature-plan.template.md +192 -0
- package/src/monorepo/templates/feature-spec.template.md +148 -0
- package/src/monorepo/templates/monthly-fix-log.template.md +92 -0
- package/src/repo/.agents/rules/ponytail.md +3 -0
- package/src/repo/.agents/skills/acli/SKILL.md +424 -0
- package/src/repo/.agents/skills/bkt-cli/SKILL.md +374 -0
- package/src/repo/.agents/skills/brainstorming/SKILL.md +54 -0
- package/src/repo/.agents/skills/code-simplifier/SKILL.md +109 -0
- package/src/repo/.agents/skills/debugger/SKILL.md +123 -0
- package/src/repo/.agents/skills/dispatching-parallel-agents/SKILL.md +206 -0
- package/src/repo/.agents/skills/executing-plans/SKILL.md +76 -0
- package/src/repo/.agents/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/src/repo/.agents/skills/gh-cli/SKILL.md +461 -0
- package/src/repo/.agents/skills/glab-cli/SKILL.md +468 -0
- package/src/repo/.agents/skills/issue-tracker/SKILL.md +119 -0
- package/src/repo/.agents/skills/linear-cli/SKILL.md +276 -0
- package/src/repo/.agents/skills/logging/SKILL.md +559 -0
- package/src/repo/.agents/skills/orient-to-recent-work/SKILL.md +43 -0
- package/src/repo/.agents/skills/ponytail/SKILL.md +101 -0
- package/src/repo/.agents/skills/ponytail-audit/SKILL.md +41 -0
- package/src/repo/.agents/skills/ponytail-debt/SKILL.md +44 -0
- package/src/repo/.agents/skills/ponytail-gain/SKILL.md +51 -0
- package/src/repo/.agents/skills/ponytail-help/SKILL.md +74 -0
- package/src/repo/.agents/skills/ponytail-review/SKILL.md +57 -0
- package/src/repo/.agents/skills/project-documentation/SKILL.md +367 -0
- package/src/repo/.agents/skills/receiving-code-review/SKILL.md +213 -0
- package/src/repo/.agents/skills/requesting-code-review/SKILL.md +105 -0
- package/src/repo/.agents/skills/requesting-code-review/code-reviewer.md +146 -0
- package/src/repo/.agents/skills/security-reviewer/SKILL.md +144 -0
- package/src/repo/.agents/skills/subagent-driven-development/SKILL.md +279 -0
- package/src/repo/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/src/repo/.agents/skills/subagent-driven-development/implementer-prompt.md +78 -0
- package/src/repo/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/src/repo/.agents/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/src/repo/.agents/skills/systematic-debugging/SKILL.md +296 -0
- package/src/repo/.agents/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/src/repo/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/src/repo/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/src/repo/.agents/skills/systematic-debugging/find-polluter.sh +63 -0
- package/src/repo/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/src/repo/.agents/skills/systematic-debugging/test-academic.md +14 -0
- package/src/repo/.agents/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/src/repo/.agents/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/src/repo/.agents/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/src/repo/.agents/skills/test-driven-development/SKILL.md +371 -0
- package/src/repo/.agents/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/src/repo/.agents/skills/using-git-worktrees/SKILL.md +291 -0
- package/src/repo/.agents/skills/using-superpowers/SKILL.md +87 -0
- package/src/repo/.agents/skills/verification-before-completion/SKILL.md +148 -0
- package/src/repo/.agents/skills/writing-plans/SKILL.md +116 -0
- package/src/repo/.agents/skills/writing-skills/SKILL.md +655 -0
- package/src/repo/.agents/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/src/repo/.agents/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/src/repo/.agents/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/src/repo/.agents/skills/writing-skills/persuasion-principles.md +187 -0
- package/src/repo/.agents/skills/writing-skills/render-graphs.js +168 -0
- package/src/repo/.agents/skills/writing-skills/testing-skills-with-subagents.md +384 -0
- package/src/repo/.claude/agents/admin-portal.agent.md +12 -0
- package/src/repo/.claude/agents/api-specialist.agent.md +12 -0
- package/src/repo/.claude/agents/backend-architect.agent.md +12 -0
- package/src/repo/.claude/agents/documenter.agent.md +12 -0
- package/src/repo/.claude/agents/feature-builder.agent.md +12 -0
- package/src/repo/.claude/agents/frontend-developer.agent.md +12 -0
- package/src/repo/.claude/agents/green.agent.md +12 -0
- package/src/repo/.claude/agents/implementer.agent.md +12 -0
- package/src/repo/.claude/agents/planner.agent.md +12 -0
- package/src/repo/.claude/agents/red.agent.md +12 -0
- package/src/repo/.claude/agents/refactor.agent.md +12 -0
- package/src/repo/.claude/agents/researcher.agent.md +12 -0
- package/src/repo/.claude/agents/reviewer.agent.md +12 -0
- package/src/repo/.claude/agents/tdd.agent.md +12 -0
- package/src/repo/.claude/agents-snippets/admin-portal.md +90 -0
- package/src/repo/.claude/agents-snippets/api-specialist.md +57 -0
- package/src/repo/.claude/agents-snippets/backend-architect.md +49 -0
- package/src/repo/.claude/agents-snippets/documenter.md +58 -0
- package/src/repo/.claude/agents-snippets/feature-builder.md +49 -0
- package/src/repo/.claude/agents-snippets/frontend-developer.md +49 -0
- package/src/repo/.claude/agents-snippets/green.md +18 -0
- package/src/repo/.claude/agents-snippets/implementer.md +31 -0
- package/src/repo/.claude/agents-snippets/planner.md +40 -0
- package/src/repo/.claude/agents-snippets/red.md +14 -0
- package/src/repo/.claude/agents-snippets/refactor.md +22 -0
- package/src/repo/.claude/agents-snippets/researcher.md +43 -0
- package/src/repo/.claude/agents-snippets/reviewer.md +83 -0
- package/src/repo/.claude/agents-snippets/tdd.md +18 -0
- package/src/repo/.claude/commands/assign-tasks.md +13 -0
- package/src/repo/.claude/commands/bootstrap-patch.md +15 -0
- package/src/repo/.claude/commands/bootstrap-upgrade.md +15 -0
- package/src/repo/.claude/commands/bootstrap.md +15 -0
- package/src/repo/.claude/commands/commit-push.md +13 -0
- package/src/repo/.claude/commands/constitution.md +15 -0
- package/src/repo/.claude/commands/create-skill.md +13 -0
- package/src/repo/.claude/commands/implement-feature.md +15 -0
- package/src/repo/.claude/commands/implement-fixes.md +15 -0
- package/src/repo/.claude/commands/implement.md +15 -0
- package/src/repo/.claude/commands/plan.md +15 -0
- package/src/repo/.claude/commands/playwright-test.md +13 -0
- package/src/repo/.claude/commands/ponytail-audit.md +15 -0
- package/src/repo/.claude/commands/ponytail-debt.md +15 -0
- package/src/repo/.claude/commands/ponytail-gain.md +15 -0
- package/src/repo/.claude/commands/ponytail-help.md +15 -0
- package/src/repo/.claude/commands/ponytail-review.md +15 -0
- package/src/repo/.claude/commands/ponytail.md +15 -0
- package/src/repo/.claude/commands/release-notes.md +13 -0
- package/src/repo/.claude/commands/review-pr.md +15 -0
- package/src/repo/.claude/commands/review-staged.md +15 -0
- package/src/repo/.claude/commands/review.md +15 -0
- package/src/repo/.claude/commands/specify.md +15 -0
- package/src/repo/.claude/commands/tasks.md +13 -0
- package/src/repo/.claude/prompt-snippets/assign-tasks.md +170 -0
- package/src/repo/.claude/prompt-snippets/bootstrap-patch.md +200 -0
- package/src/repo/.claude/prompt-snippets/bootstrap-upgrade.md +357 -0
- package/src/repo/.claude/prompt-snippets/bootstrap.md +1026 -0
- package/src/repo/.claude/prompt-snippets/commit-push.md +70 -0
- package/src/repo/.claude/prompt-snippets/constitution.md +57 -0
- package/src/repo/.claude/prompt-snippets/create-skill.md +490 -0
- package/src/repo/.claude/prompt-snippets/implement-feature.md +124 -0
- package/src/repo/.claude/prompt-snippets/implement-fixes.md +116 -0
- package/src/repo/.claude/prompt-snippets/implement.md +56 -0
- package/src/repo/.claude/prompt-snippets/plan.md +94 -0
- package/src/repo/.claude/prompt-snippets/playwright-test.md +58 -0
- package/src/repo/.claude/prompt-snippets/ponytail-audit.md +5 -0
- package/src/repo/.claude/prompt-snippets/ponytail-debt.md +5 -0
- package/src/repo/.claude/prompt-snippets/ponytail-gain.md +5 -0
- package/src/repo/.claude/prompt-snippets/ponytail-help.md +5 -0
- package/src/repo/.claude/prompt-snippets/ponytail-review.md +5 -0
- package/src/repo/.claude/prompt-snippets/ponytail.md +5 -0
- package/src/repo/.claude/prompt-snippets/release-notes.md +204 -0
- package/src/repo/.claude/prompt-snippets/review-pr.md +156 -0
- package/src/repo/.claude/prompt-snippets/review-staged.md +35 -0
- package/src/repo/.claude/prompt-snippets/review.md +139 -0
- package/src/repo/.claude/prompt-snippets/specify.md +84 -0
- package/src/repo/.claude/prompt-snippets/tasks.md +146 -0
- package/src/repo/.claude/rules/agent-conduct.md +13 -0
- package/src/repo/.claude/rules/api-server.md +16 -0
- package/src/repo/.claude/rules/coding-standards.md +13 -0
- package/src/repo/.claude/rules/component-structure.md +15 -0
- package/src/repo/.claude/rules/core-libraries.md +13 -0
- package/src/repo/.claude/rules/environment-tooling.md +13 -0
- package/src/repo/.claude/rules/logging-comments.md +13 -0
- package/src/repo/.claude/rules/logging.md +13 -0
- package/src/repo/.claude/rules/orient-to-recent-work.md +13 -0
- package/src/repo/.claude/rules/prisma-migrations.md +16 -0
- package/src/repo/.claude/rules/project-context.md +13 -0
- package/src/repo/.claude/rules/server-client-separation.md +13 -0
- package/src/repo/.claude/rules/subagent-workflow.md +13 -0
- package/src/repo/.claude/rules/testing-quality.md +16 -0
- package/src/repo/.claude/rules/testing.md +16 -0
- package/src/repo/.claude/rules/ui-accessibility.md +15 -0
- package/src/repo/.claude/rules/version-control.md +13 -0
- package/src/repo/.claude/rules/what-to-avoid.md +13 -0
- package/src/repo/.claude/rules-snippets/agent-conduct.md +51 -0
- package/src/repo/.claude/rules-snippets/api-server.md +7 -0
- package/src/repo/.claude/rules-snippets/coding-standards.md +45 -0
- package/src/repo/.claude/rules-snippets/component-structure.md +8 -0
- package/src/repo/.claude/rules-snippets/core-libraries.md +6 -0
- package/src/repo/.claude/rules-snippets/deployment.md +38 -0
- package/src/repo/.claude/rules-snippets/documentation.md +621 -0
- package/src/repo/.claude/rules-snippets/environment-tooling.md +6 -0
- package/src/repo/.claude/rules-snippets/logging-comments.md +4 -0
- package/src/repo/.claude/rules-snippets/logging.md +352 -0
- package/src/repo/.claude/rules-snippets/patterns.md +29 -0
- package/src/repo/.claude/rules-snippets/ponytail.md +24 -0
- package/src/repo/.claude/rules-snippets/prisma-migrations.md +8 -0
- package/src/repo/.claude/rules-snippets/project-context.md +25 -0
- package/src/repo/.claude/rules-snippets/server-client-separation.md +7 -0
- package/src/repo/.claude/rules-snippets/subagent-workflow.md +134 -0
- package/src/repo/.claude/rules-snippets/testing-quality.md +5 -0
- package/src/repo/.claude/rules-snippets/testing.md +38 -0
- package/src/repo/.claude/rules-snippets/ui-accessibility.md +7 -0
- package/src/repo/.claude/rules-snippets/version-control.md +6 -0
- package/src/repo/.claude/rules-snippets/what-to-avoid.md +8 -0
- package/src/repo/.claude/rules-snippets/workflows.md +25 -0
- package/src/repo/.claude/settings.json +7 -0
- package/src/repo/.claude/skills/README.md +50 -0
- package/src/repo/.cursor/agents/admin-portal.agent.md +11 -0
- package/src/repo/.cursor/agents/api-specialist.agent.md +11 -0
- package/src/repo/.cursor/agents/backend-architect.agent.md +11 -0
- package/src/repo/.cursor/agents/documenter.agent.md +11 -0
- package/src/repo/.cursor/agents/feature-builder.agent.md +11 -0
- package/src/repo/.cursor/agents/frontend-developer.agent.md +11 -0
- package/src/repo/.cursor/agents/green.agent.md +11 -0
- package/src/repo/.cursor/agents/implementer.agent.md +11 -0
- package/src/repo/.cursor/agents/planner.agent.md +11 -0
- package/src/repo/.cursor/agents/red.agent.md +11 -0
- package/src/repo/.cursor/agents/refactor.agent.md +11 -0
- package/src/repo/.cursor/agents/researcher.agent.md +11 -0
- package/src/repo/.cursor/agents/reviewer.agent.md +11 -0
- package/src/repo/.cursor/agents/tdd.agent.md +11 -0
- package/src/repo/.cursor/commands/assign-tasks.md +13 -0
- package/src/repo/.cursor/commands/bootstrap-patch.md +17 -0
- package/src/repo/.cursor/commands/bootstrap-upgrade.md +15 -0
- package/src/repo/.cursor/commands/bootstrap.md +17 -0
- package/src/repo/.cursor/commands/commit-push.md +15 -0
- package/src/repo/.cursor/commands/constitution.md +17 -0
- package/src/repo/.cursor/commands/create-skill.md +15 -0
- package/src/repo/.cursor/commands/implement-feature.md +17 -0
- package/src/repo/.cursor/commands/implement-fixes.md +17 -0
- package/src/repo/.cursor/commands/implement.md +17 -0
- package/src/repo/.cursor/commands/plan.md +17 -0
- package/src/repo/.cursor/commands/playwright-test.md +15 -0
- package/src/repo/.cursor/commands/ponytail-audit.md +13 -0
- package/src/repo/.cursor/commands/ponytail-debt.md +13 -0
- package/src/repo/.cursor/commands/ponytail-gain.md +13 -0
- package/src/repo/.cursor/commands/ponytail-help.md +13 -0
- package/src/repo/.cursor/commands/ponytail-review.md +13 -0
- package/src/repo/.cursor/commands/ponytail.md +13 -0
- package/src/repo/.cursor/commands/release-notes.md +15 -0
- package/src/repo/.cursor/commands/review-pr.md +17 -0
- package/src/repo/.cursor/commands/review-staged.md +10 -0
- package/src/repo/.cursor/commands/review.md +17 -0
- package/src/repo/.cursor/commands/specify.md +17 -0
- package/src/repo/.cursor/commands/tasks.md +15 -0
- package/src/repo/.cursor/mcp.json +13 -0
- package/src/repo/.cursor/rules/agent-conduct.mdc +11 -0
- package/src/repo/.cursor/rules/api-server.mdc +11 -0
- package/src/repo/.cursor/rules/coding-standards.mdc +11 -0
- package/src/repo/.cursor/rules/component-structure.mdc +11 -0
- package/src/repo/.cursor/rules/core-libraries.mdc +11 -0
- package/src/repo/.cursor/rules/environment-tooling.mdc +11 -0
- package/src/repo/.cursor/rules/logging-comments.mdc +11 -0
- package/src/repo/.cursor/rules/logging.mdc +11 -0
- package/src/repo/.cursor/rules/orient-to-recent-work.mdc +9 -0
- package/src/repo/.cursor/rules/ponytail.mdc +9 -0
- package/src/repo/.cursor/rules/prisma-migrations.mdc +11 -0
- package/src/repo/.cursor/rules/project-context.mdc +11 -0
- package/src/repo/.cursor/rules/server-client-separation.mdc +11 -0
- package/src/repo/.cursor/rules/subagent-workflow.mdc +11 -0
- package/src/repo/.cursor/rules/testing-quality.mdc +11 -0
- package/src/repo/.cursor/rules/ui-accessibility.mdc +11 -0
- package/src/repo/.cursor/rules/version-control.mdc +11 -0
- package/src/repo/.cursor/rules/what-to-avoid.mdc +11 -0
- package/src/repo/.cursor/skills/README.md +50 -0
- package/src/repo/.github/agents/admin-portal.agent.md +11 -0
- package/src/repo/.github/agents/api-specialist.agent.md +11 -0
- package/src/repo/.github/agents/backend-architect.agent.md +11 -0
- package/src/repo/.github/agents/documenter.agent.md +11 -0
- package/src/repo/.github/agents/feature-builder.agent.md +24 -0
- package/src/repo/.github/agents/frontend-developer.agent.md +11 -0
- package/src/repo/.github/agents/green.agent.md +12 -0
- package/src/repo/.github/agents/implementer.agent.md +12 -0
- package/src/repo/.github/agents/planner.agent.md +12 -0
- package/src/repo/.github/agents/red.agent.md +12 -0
- package/src/repo/.github/agents/refactor.agent.md +12 -0
- package/src/repo/.github/agents/researcher.agent.md +12 -0
- package/src/repo/.github/agents/reviewer.agent.md +11 -0
- package/src/repo/.github/agents/tdd.agent.md +13 -0
- package/src/repo/.github/copilot-instructions.md +89 -0
- package/src/repo/.github/instructions/agent-conduct.instructions.md +13 -0
- package/src/repo/.github/instructions/api-server.instructions.md +13 -0
- package/src/repo/.github/instructions/coding-standards.instructions.md +13 -0
- package/src/repo/.github/instructions/component-structure.instructions.md +13 -0
- package/src/repo/.github/instructions/core-libraries.instructions.md +13 -0
- package/src/repo/.github/instructions/deployment.instructions.md +13 -0
- package/src/repo/.github/instructions/documentation.instructions.md +14 -0
- package/src/repo/.github/instructions/environment-tooling.instructions.md +13 -0
- package/src/repo/.github/instructions/logging-comments.instructions.md +13 -0
- package/src/repo/.github/instructions/logging.instructions.md +13 -0
- package/src/repo/.github/instructions/patterns.instructions.md +13 -0
- package/src/repo/.github/instructions/prisma-migrations.instructions.md +13 -0
- package/src/repo/.github/instructions/project-context.instructions.md +13 -0
- package/src/repo/.github/instructions/server-client-separation.instructions.md +13 -0
- package/src/repo/.github/instructions/subagent-workflow.instructions.md +13 -0
- package/src/repo/.github/instructions/testing-quality.instructions.md +13 -0
- package/src/repo/.github/instructions/testing.instructions.md +13 -0
- package/src/repo/.github/instructions/ui-accessibility.instructions.md +13 -0
- package/src/repo/.github/instructions/version-control.instructions.md +13 -0
- package/src/repo/.github/instructions/what-to-avoid.instructions.md +13 -0
- package/src/repo/.github/instructions/workflows.instructions.md +13 -0
- package/src/repo/.github/prompts/assign-tasks.prompt.md +14 -0
- package/src/repo/.github/prompts/bootstrap-patch.prompt.md +16 -0
- package/src/repo/.github/prompts/bootstrap-upgrade.prompt.md +15 -0
- package/src/repo/.github/prompts/bootstrap.prompt.md +16 -0
- package/src/repo/.github/prompts/commit-push.prompt.md +14 -0
- package/src/repo/.github/prompts/constitution.prompt.md +16 -0
- package/src/repo/.github/prompts/create-skill.prompt.md +16 -0
- package/src/repo/.github/prompts/implement-feature.prompt.md +16 -0
- package/src/repo/.github/prompts/implement-fixes.prompt.md +16 -0
- package/src/repo/.github/prompts/implement.prompt.md +16 -0
- package/src/repo/.github/prompts/plan.prompt.md +16 -0
- package/src/repo/.github/prompts/playwright-test.prompt.md +14 -0
- package/src/repo/.github/prompts/ponytail-audit.prompt.md +13 -0
- package/src/repo/.github/prompts/ponytail-debt.prompt.md +13 -0
- package/src/repo/.github/prompts/ponytail-gain.prompt.md +13 -0
- package/src/repo/.github/prompts/ponytail-help.prompt.md +13 -0
- package/src/repo/.github/prompts/ponytail-review.prompt.md +13 -0
- package/src/repo/.github/prompts/ponytail.prompt.md +13 -0
- package/src/repo/.github/prompts/release-notes.prompt.md +14 -0
- package/src/repo/.github/prompts/review-pr.prompt.md +16 -0
- package/src/repo/.github/prompts/review-staged.prompt.md +16 -0
- package/src/repo/.github/prompts/review.prompt.md +16 -0
- package/src/repo/.github/prompts/specify.prompt.md +16 -0
- package/src/repo/.github/prompts/tasks.prompt.md +14 -0
- package/src/repo/.github/skills/README.md +36 -0
- package/src/repo/.mcp.json +13 -0
- package/src/repo/.opencode/agents/admin-portal.md +14 -0
- package/src/repo/.opencode/agents/api-specialist.md +14 -0
- package/src/repo/.opencode/agents/backend-architect.md +14 -0
- package/src/repo/.opencode/agents/documenter.md +14 -0
- package/src/repo/.opencode/agents/feature-builder.md +15 -0
- package/src/repo/.opencode/agents/frontend-developer.md +14 -0
- package/src/repo/.opencode/agents/green.md +14 -0
- package/src/repo/.opencode/agents/implementer.md +14 -0
- package/src/repo/.opencode/agents/planner.md +14 -0
- package/src/repo/.opencode/agents/red.md +14 -0
- package/src/repo/.opencode/agents/refactor.md +14 -0
- package/src/repo/.opencode/agents/researcher.md +14 -0
- package/src/repo/.opencode/agents/reviewer.md +14 -0
- package/src/repo/.opencode/agents/tdd.md +15 -0
- package/src/repo/.opencode/commands/assign-tasks.md +16 -0
- package/src/repo/.opencode/commands/bootstrap-patch.md +18 -0
- package/src/repo/.opencode/commands/bootstrap-upgrade.md +18 -0
- package/src/repo/.opencode/commands/bootstrap.md +18 -0
- package/src/repo/.opencode/commands/commit-push.md +16 -0
- package/src/repo/.opencode/commands/constitution.md +18 -0
- package/src/repo/.opencode/commands/create-skill.md +16 -0
- package/src/repo/.opencode/commands/implement-feature.md +18 -0
- package/src/repo/.opencode/commands/implement-fixes.md +20 -0
- package/src/repo/.opencode/commands/implement.md +18 -0
- package/src/repo/.opencode/commands/plan.md +18 -0
- package/src/repo/.opencode/commands/playwright-test.md +16 -0
- package/src/repo/.opencode/commands/ponytail-audit.md +10 -0
- package/src/repo/.opencode/commands/ponytail-debt.md +10 -0
- package/src/repo/.opencode/commands/ponytail-gain.md +10 -0
- package/src/repo/.opencode/commands/ponytail-help.md +10 -0
- package/src/repo/.opencode/commands/ponytail-review.md +10 -0
- package/src/repo/.opencode/commands/ponytail.md +10 -0
- package/src/repo/.opencode/commands/release-notes.md +16 -0
- package/src/repo/.opencode/commands/review-pr.md +18 -0
- package/src/repo/.opencode/commands/review-staged.md +11 -0
- package/src/repo/.opencode/commands/review.md +18 -0
- package/src/repo/.opencode/commands/specify.md +18 -0
- package/src/repo/.opencode/commands/tasks.md +16 -0
- package/src/repo/.opencode/opencode.json +9 -0
- package/src/repo/.opencode/plugins/ponytail.mjs +79 -0
- package/src/repo/.opencode/rules/agent-conduct.md +11 -0
- package/src/repo/.opencode/rules/api-server.md +11 -0
- package/src/repo/.opencode/rules/coding-standards.md +11 -0
- package/src/repo/.opencode/rules/component-structure.md +11 -0
- package/src/repo/.opencode/rules/core-libraries.md +11 -0
- package/src/repo/.opencode/rules/environment-tooling.md +11 -0
- package/src/repo/.opencode/rules/logging-comments.md +11 -0
- package/src/repo/.opencode/rules/logging.md +11 -0
- package/src/repo/.opencode/rules/ponytail.md +3 -0
- package/src/repo/.opencode/rules/prisma-migrations.md +11 -0
- package/src/repo/.opencode/rules/project-context.md +11 -0
- package/src/repo/.opencode/rules/server-client-separation.md +11 -0
- package/src/repo/.opencode/rules/subagent-workflow.md +11 -0
- package/src/repo/.opencode/rules/testing-quality.md +11 -0
- package/src/repo/.opencode/rules/ui-accessibility.md +11 -0
- package/src/repo/.opencode/rules/version-control.md +11 -0
- package/src/repo/.opencode/rules/what-to-avoid.md +11 -0
- package/src/repo/.vscode/mcp.json +13 -0
- package/src/repo/AGENTS.md +387 -0
- package/src/repo/CLAUDE.md +51 -0
- package/src/repo/README.md +145 -0
- package/src/repo/docs/api/README.md +82 -0
- package/src/repo/docs/architecture/README.md +56 -0
- package/src/repo/docs/features/README.md +82 -0
- package/src/repo/docs/fixes/README.md +117 -0
- package/src/repo/hooks/claude-codex-hooks.json +31 -0
- package/src/repo/hooks/copilot-hooks.json +21 -0
- package/src/repo/hooks/ponytail-activate.js +91 -0
- package/src/repo/hooks/ponytail-config.js +122 -0
- package/src/repo/hooks/ponytail-instructions.js +92 -0
- package/src/repo/hooks/ponytail-mode-tracker.js +55 -0
- package/src/repo/hooks/ponytail-runtime.js +51 -0
- package/src/repo/hooks/ponytail-statusline.ps1 +21 -0
- package/src/repo/hooks/ponytail-statusline.sh +12 -0
- package/src/repo/templates/README.md +80 -0
- package/src/repo/templates/adr.template.md +162 -0
- package/src/repo/templates/complex-fix-plan.template.md +162 -0
- package/src/repo/templates/complex-fix-spec.template.md +163 -0
- package/src/repo/templates/feature-plan.template.md +202 -0
- package/src/repo/templates/feature-spec.template.md +148 -0
- package/src/repo/templates/monthly-fix-log.template.md +91 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: linear-cli
|
|
3
|
+
description: Manage Linear issues from the command line using the linear CLI. This skill allows automating Linear issue management including creating, updating, querying, and commenting on issues.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Linear CLI
|
|
7
|
+
|
|
8
|
+
A CLI to manage Linear issues from the command line, with git and jj integration.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks to create, view, edit, or search Linear issues
|
|
13
|
+
- User needs to manage teams, projects, or cycles
|
|
14
|
+
- User wants to transition issue states or add comments
|
|
15
|
+
- MCP tools (`mcp_linear_*`) are unavailable or failing
|
|
16
|
+
- User needs scripted/batch issue operations
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
The `linear` command must be available on PATH. To check:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
linear --version
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If not installed globally, you can run it without installing via npx:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx @schpet/linear-cli --version
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
All subsequent commands can be prefixed with `npx @schpet/linear-cli` in place of `linear`. Otherwise, follow the install instructions at:
|
|
33
|
+
https://github.com/schpet/linear-cli?tab=readme-ov-file#install
|
|
34
|
+
|
|
35
|
+
## Best Practices for Markdown Content
|
|
36
|
+
|
|
37
|
+
When working with issue descriptions or comment bodies that contain markdown, **always prefer using file-based flags** instead of passing content as command-line arguments:
|
|
38
|
+
|
|
39
|
+
- Use `--description-file` for `issue create` and `issue update` commands
|
|
40
|
+
- Use `--body-file` for `comment add` and `comment update` commands
|
|
41
|
+
|
|
42
|
+
**Why use file-based flags:**
|
|
43
|
+
|
|
44
|
+
- Ensures proper formatting in the Linear web UI
|
|
45
|
+
- Avoids shell escaping issues with newlines and special characters
|
|
46
|
+
- Prevents literal `\n` sequences from appearing in markdown
|
|
47
|
+
- Makes it easier to work with multi-line content
|
|
48
|
+
|
|
49
|
+
**Example workflow:**
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Write markdown to a temporary file
|
|
53
|
+
cat > /tmp/description.md <<'EOF'
|
|
54
|
+
## Summary
|
|
55
|
+
|
|
56
|
+
- First item
|
|
57
|
+
- Second item
|
|
58
|
+
|
|
59
|
+
## Details
|
|
60
|
+
|
|
61
|
+
This is a detailed description with proper formatting.
|
|
62
|
+
EOF
|
|
63
|
+
|
|
64
|
+
# Create issue using the file
|
|
65
|
+
linear issue create --title "My Issue" --description-file /tmp/description.md
|
|
66
|
+
|
|
67
|
+
# Or for comments
|
|
68
|
+
linear issue comment add ENG-123 --body-file /tmp/comment.md
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Only use inline flags** (`--description`, `--body`) for simple, single-line content.
|
|
72
|
+
|
|
73
|
+
## Available Commands
|
|
74
|
+
|
|
75
|
+
Compact command list, generated from `linear --help`:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
linear auth
|
|
79
|
+
linear auth login
|
|
80
|
+
linear auth logout
|
|
81
|
+
linear auth list
|
|
82
|
+
linear auth default
|
|
83
|
+
linear auth token
|
|
84
|
+
linear auth whoami
|
|
85
|
+
linear auth migrate
|
|
86
|
+
|
|
87
|
+
linear issue
|
|
88
|
+
linear issue id
|
|
89
|
+
linear issue mine
|
|
90
|
+
linear issue query
|
|
91
|
+
linear issue title
|
|
92
|
+
linear issue start
|
|
93
|
+
linear issue view
|
|
94
|
+
linear issue url
|
|
95
|
+
linear issue describe
|
|
96
|
+
linear issue commits
|
|
97
|
+
linear issue pull-request
|
|
98
|
+
linear issue delete
|
|
99
|
+
linear issue create
|
|
100
|
+
linear issue update
|
|
101
|
+
linear issue comment
|
|
102
|
+
linear issue comment add
|
|
103
|
+
linear issue comment delete
|
|
104
|
+
linear issue comment update
|
|
105
|
+
linear issue comment list
|
|
106
|
+
linear issue attach
|
|
107
|
+
linear issue link
|
|
108
|
+
linear issue relation
|
|
109
|
+
linear issue relation add
|
|
110
|
+
linear issue relation delete
|
|
111
|
+
linear issue relation list
|
|
112
|
+
|
|
113
|
+
linear team
|
|
114
|
+
linear team create
|
|
115
|
+
linear team delete
|
|
116
|
+
linear team list
|
|
117
|
+
linear team id
|
|
118
|
+
linear team autolinks
|
|
119
|
+
linear team members
|
|
120
|
+
|
|
121
|
+
linear project
|
|
122
|
+
linear project list
|
|
123
|
+
linear project view
|
|
124
|
+
linear project create
|
|
125
|
+
linear project update
|
|
126
|
+
linear project delete
|
|
127
|
+
|
|
128
|
+
linear project-update
|
|
129
|
+
linear project-update create
|
|
130
|
+
linear project-update list
|
|
131
|
+
|
|
132
|
+
linear cycle
|
|
133
|
+
linear cycle list
|
|
134
|
+
linear cycle view
|
|
135
|
+
|
|
136
|
+
linear milestone
|
|
137
|
+
linear milestone list
|
|
138
|
+
linear milestone view
|
|
139
|
+
linear milestone create
|
|
140
|
+
linear milestone update
|
|
141
|
+
linear milestone delete
|
|
142
|
+
|
|
143
|
+
linear initiative
|
|
144
|
+
linear initiative list
|
|
145
|
+
linear initiative view
|
|
146
|
+
linear initiative create
|
|
147
|
+
linear initiative archive
|
|
148
|
+
linear initiative update
|
|
149
|
+
linear initiative unarchive
|
|
150
|
+
linear initiative delete
|
|
151
|
+
linear initiative add-project
|
|
152
|
+
linear initiative remove-project
|
|
153
|
+
|
|
154
|
+
linear initiative-update
|
|
155
|
+
linear initiative-update create
|
|
156
|
+
linear initiative-update list
|
|
157
|
+
|
|
158
|
+
linear label
|
|
159
|
+
linear label list
|
|
160
|
+
linear label create
|
|
161
|
+
linear label delete
|
|
162
|
+
|
|
163
|
+
linear document
|
|
164
|
+
linear document list
|
|
165
|
+
linear document view
|
|
166
|
+
linear document create
|
|
167
|
+
linear document update
|
|
168
|
+
linear document delete
|
|
169
|
+
|
|
170
|
+
linear config
|
|
171
|
+
linear schema
|
|
172
|
+
linear api
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Discovering Options
|
|
176
|
+
|
|
177
|
+
To see available subcommands and flags, run `--help` on any command:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
linear --help
|
|
181
|
+
linear issue --help
|
|
182
|
+
linear issue list --help
|
|
183
|
+
linear issue create --help
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Each command has detailed help output describing all available flags and options.
|
|
187
|
+
|
|
188
|
+
Some commands have required flags that aren't obvious. Notable examples:
|
|
189
|
+
|
|
190
|
+
- `issue list` requires a sort order — provide it via `--sort` (valid values: `manual`, `priority`), the `issue_sort` config option, or the `LINEAR_ISSUE_SORT` env var. Also requires `--team <key>` unless the team can be inferred from the directory — if unknown, run `linear team list` first.
|
|
191
|
+
- `--no-pager` is only supported on `issue list` — passing it to other commands like `project list` will error.
|
|
192
|
+
|
|
193
|
+
## Using the Linear GraphQL API Directly
|
|
194
|
+
|
|
195
|
+
**Prefer the CLI for all supported operations.** The `api` command should only be used as a fallback for queries not covered by the CLI.
|
|
196
|
+
|
|
197
|
+
### Check the schema for available types and fields
|
|
198
|
+
|
|
199
|
+
Write the schema to a tempfile, then search it:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
linear schema -o "${TMPDIR:-/tmp}/linear-schema.graphql"
|
|
203
|
+
grep -i "cycle" "${TMPDIR:-/tmp}/linear-schema.graphql"
|
|
204
|
+
grep -A 30 "^type Issue " "${TMPDIR:-/tmp}/linear-schema.graphql"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Make a GraphQL request
|
|
208
|
+
|
|
209
|
+
**Important:** GraphQL queries containing non-null type markers (e.g. `String` followed by an exclamation mark) must be passed via heredoc stdin to avoid escaping issues. Simple queries without those markers can be passed inline.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Simple query (no type markers, so inline is fine)
|
|
213
|
+
linear api '{ viewer { id name email } }'
|
|
214
|
+
|
|
215
|
+
# Query with variables — use heredoc to avoid escaping issues
|
|
216
|
+
linear api --variable teamId=abc123 <<'GRAPHQL'
|
|
217
|
+
query($teamId: String!) { team(id: $teamId) { name } }
|
|
218
|
+
GRAPHQL
|
|
219
|
+
|
|
220
|
+
# Search issues by text
|
|
221
|
+
linear api --variable term=onboarding <<'GRAPHQL'
|
|
222
|
+
query($term: String!) { searchIssues(term: $term, first: 20) { nodes { identifier title state { name } } } }
|
|
223
|
+
GRAPHQL
|
|
224
|
+
|
|
225
|
+
# Pipe to jq for filtering
|
|
226
|
+
linear api '{ issues(first: 5) { nodes { identifier title } } }' | jq '.data.issues.nodes[].title'
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Advanced: Using curl directly
|
|
230
|
+
|
|
231
|
+
For cases where you need full HTTP control, use `linear auth token`:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
curl -s -X POST https://api.linear.app/graphql \
|
|
235
|
+
-H "Content-Type: application/json" \
|
|
236
|
+
-H "Authorization: $(linear auth token)" \
|
|
237
|
+
-d '{"query": "{ viewer { id } }"}'
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Common Workflows
|
|
241
|
+
|
|
242
|
+
### Create and Start an Issue
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
linear issue create --title "Implement feature" --team ENG --description-file /tmp/desc.md
|
|
246
|
+
# Note the returned issue key
|
|
247
|
+
linear issue start ENG-123
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### View My Current Issues
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
linear issue mine
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Update Issue State
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
linear issue update ENG-123 --state "In Progress"
|
|
260
|
+
linear issue update ENG-123 --state "Done"
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Comment on an Issue
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
linear issue comment add ENG-123 --body "Working on this"
|
|
267
|
+
linear issue comment add ENG-123 --body-file /tmp/update.md
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## Limitations
|
|
271
|
+
|
|
272
|
+
- Requires `linear auth login` before first use
|
|
273
|
+
- Some commands require `--team` flag unless inferred from directory config
|
|
274
|
+
- `issue list` requires explicit sort order
|
|
275
|
+
- `--no-pager` only works on `issue list`
|
|
276
|
+
- Rate limits apply based on Linear API limits
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: logging
|
|
3
|
+
description: Comprehensive logging standards for applications including structured logging, log levels, message formatting, and observability guidelines
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: {{PROJECT_NAME}} Team
|
|
6
|
+
created: 2026-01-26
|
|
7
|
+
updated: 2026-01-26
|
|
8
|
+
tags:
|
|
9
|
+
- logging
|
|
10
|
+
- structured-logging
|
|
11
|
+
- observability
|
|
12
|
+
- debugging
|
|
13
|
+
- monitoring
|
|
14
|
+
applies_to:
|
|
15
|
+
- "**/*.{{FILE_EXTENSION}}"
|
|
16
|
+
- "services/**/*"
|
|
17
|
+
- "api/**/*"
|
|
18
|
+
- "packages/**/*"
|
|
19
|
+
- "apps/**/*"
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Logging Standards
|
|
23
|
+
|
|
24
|
+
Comprehensive logging guidelines for consistent, structured, and maintainable logging across the monorepo.
|
|
25
|
+
|
|
26
|
+
## Core Principles
|
|
27
|
+
|
|
28
|
+
### 1. Structured Logging
|
|
29
|
+
|
|
30
|
+
All logs MUST be structured (JSON-serializable) for efficient querying and analysis.
|
|
31
|
+
|
|
32
|
+
### 2. Contextual Information
|
|
33
|
+
|
|
34
|
+
Include relevant context (request ID, user ID, session ID) in every log.
|
|
35
|
+
|
|
36
|
+
### 3. Appropriate Levels
|
|
37
|
+
|
|
38
|
+
Use correct log levels to enable effective filtering.
|
|
39
|
+
|
|
40
|
+
### 4. Performance Aware
|
|
41
|
+
|
|
42
|
+
Avoid expensive operations in log statements.
|
|
43
|
+
|
|
44
|
+
## Log Levels
|
|
45
|
+
|
|
46
|
+
| Level | When to Use | Examples |
|
|
47
|
+
| --------- | -------------------------------------- | ------------------------------------------------ |
|
|
48
|
+
| **ERROR** | Application errors requiring attention | Unhandled exceptions, failed critical operations |
|
|
49
|
+
| **WARN** | Unexpected but recoverable situations | Retry attempts, deprecated usage, rate limiting |
|
|
50
|
+
| **INFO** | Significant application events | Request handling, job completion, config changes |
|
|
51
|
+
| **DEBUG** | Detailed diagnostic information | Variable values, execution paths, timing |
|
|
52
|
+
| **TRACE** | Very detailed debugging | Loop iterations, method entry/exit |
|
|
53
|
+
|
|
54
|
+
## Message Format Pattern
|
|
55
|
+
|
|
56
|
+
**REQUIRED**: All log messages MUST follow this pattern:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
[SERVICE_OR_CLASS]: MESSAGE
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The prefix should be the **actual class name or service name** enclosed in square brackets.
|
|
63
|
+
|
|
64
|
+
## Language-Specific Examples
|
|
65
|
+
|
|
66
|
+
### TypeScript/JavaScript
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { logger } from "@{{PROJECT_NAME}}/logging";
|
|
70
|
+
|
|
71
|
+
// ✅ GOOD - Structured with context
|
|
72
|
+
logger.info("[UserService]: User created", {
|
|
73
|
+
userId: user.id,
|
|
74
|
+
email: user.email,
|
|
75
|
+
source: "registration",
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// ✅ GOOD - Error with stack trace
|
|
79
|
+
logger.error("[PaymentService]: Payment processing failed", {
|
|
80
|
+
error: err.message,
|
|
81
|
+
stack: err.stack,
|
|
82
|
+
orderId: order.id,
|
|
83
|
+
amount: order.total,
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// ❌ BAD - String interpolation loses structure
|
|
87
|
+
logger.info(`User ${userId} created with email ${email}`);
|
|
88
|
+
|
|
89
|
+
// ❌ BAD - Missing context
|
|
90
|
+
logger.error("Payment failed");
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Python
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
import structlog
|
|
97
|
+
|
|
98
|
+
logger = structlog.get_logger()
|
|
99
|
+
|
|
100
|
+
# ✅ GOOD - Structured with context
|
|
101
|
+
logger.info("[UserService]: User created",
|
|
102
|
+
user_id=user.id,
|
|
103
|
+
email=user.email,
|
|
104
|
+
source="registration"
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
# ✅ GOOD - Error with exception
|
|
108
|
+
logger.error("[PaymentService]: Payment processing failed",
|
|
109
|
+
error=str(e),
|
|
110
|
+
order_id=order.id,
|
|
111
|
+
amount=order.total,
|
|
112
|
+
exc_info=True
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
# ❌ BAD - f-string loses structure
|
|
116
|
+
logger.info(f"User {user_id} created with email {email}")
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### C# / .NET
|
|
120
|
+
|
|
121
|
+
```csharp
|
|
122
|
+
// ✅ GOOD - Structured logging with named parameters
|
|
123
|
+
_logger.LogInformation("[UserService]: User created - UserId: {UserId}, Email: {Email}",
|
|
124
|
+
user.Id, user.Email);
|
|
125
|
+
|
|
126
|
+
// ✅ GOOD - Error with exception
|
|
127
|
+
_logger.LogError(ex, "[PaymentService]: Payment failed - OrderId: {OrderId}, Amount: {Amount}",
|
|
128
|
+
order.Id, order.Total);
|
|
129
|
+
|
|
130
|
+
// ❌ BAD - String interpolation
|
|
131
|
+
_logger.LogInformation($"User {userId} created with email {email}");
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Go
|
|
135
|
+
|
|
136
|
+
```go
|
|
137
|
+
// ✅ GOOD - Structured with context
|
|
138
|
+
logger.Info("[UserService]: User created",
|
|
139
|
+
zap.String("userId", user.ID),
|
|
140
|
+
zap.String("email", user.Email),
|
|
141
|
+
zap.String("source", "registration"),
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
// ✅ GOOD - Error with stack
|
|
145
|
+
logger.Error("[PaymentService]: Payment failed",
|
|
146
|
+
zap.Error(err),
|
|
147
|
+
zap.String("orderId", order.ID),
|
|
148
|
+
zap.Float64("amount", order.Total),
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
// ❌ BAD - Printf style
|
|
152
|
+
logger.Info(fmt.Sprintf("User %s created", userId))
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Contextual Logging
|
|
156
|
+
|
|
157
|
+
### Request Context
|
|
158
|
+
|
|
159
|
+
Always include request-scoped identifiers:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// Middleware sets context
|
|
163
|
+
const requestContext = {
|
|
164
|
+
requestId: req.headers["x-request-id"] || uuid(),
|
|
165
|
+
userId: req.user?.id,
|
|
166
|
+
sessionId: req.session?.id,
|
|
167
|
+
traceId: req.headers["x-trace-id"],
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
// All logs in request include context
|
|
171
|
+
logger.info("[OrderController]: Order submitted", {
|
|
172
|
+
...requestContext,
|
|
173
|
+
orderId: order.id,
|
|
174
|
+
itemCount: order.items.length,
|
|
175
|
+
});
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Correlation IDs
|
|
179
|
+
|
|
180
|
+
For async operations, propagate correlation:
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
async function processOrder(order: Order, correlationId: string) {
|
|
184
|
+
logger.info("[OrderProcessor]: Starting order processing", {
|
|
185
|
+
correlationId,
|
|
186
|
+
orderId: order.id,
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Pass to downstream services
|
|
190
|
+
await inventoryService.reserve(order.items, { correlationId });
|
|
191
|
+
await paymentService.charge(order.total, { correlationId });
|
|
192
|
+
|
|
193
|
+
logger.info("[OrderProcessor]: Order processing complete", {
|
|
194
|
+
correlationId,
|
|
195
|
+
orderId: order.id,
|
|
196
|
+
duration: Date.now() - startTime,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Performance Logging
|
|
202
|
+
|
|
203
|
+
### Timing Operations
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
const startTime = performance.now();
|
|
207
|
+
|
|
208
|
+
await expensiveOperation();
|
|
209
|
+
|
|
210
|
+
const duration = performance.now() - startTime;
|
|
211
|
+
logger.info("[DataProcessor]: Operation completed", {
|
|
212
|
+
operationType: "batch-import",
|
|
213
|
+
recordCount: records.length,
|
|
214
|
+
durationMs: Math.round(duration),
|
|
215
|
+
recordsPerSecond: Math.round(records.length / (duration / 1000)),
|
|
216
|
+
});
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Conditional Debug Logging
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
// Avoid expensive serialization unless needed
|
|
223
|
+
if (logger.isDebugEnabled()) {
|
|
224
|
+
logger.debug("[CacheService]: Cache contents", {
|
|
225
|
+
keys: cache.keys(),
|
|
226
|
+
size: cache.size,
|
|
227
|
+
hitRate: cache.stats.hitRate,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Error Logging Best Practices
|
|
233
|
+
|
|
234
|
+
### Include Full Context
|
|
235
|
+
|
|
236
|
+
```typescript
|
|
237
|
+
try {
|
|
238
|
+
await processPayment(order);
|
|
239
|
+
} catch (error) {
|
|
240
|
+
logger.error("[PaymentService]: Payment processing failed", {
|
|
241
|
+
error: error.message,
|
|
242
|
+
stack: error.stack,
|
|
243
|
+
errorCode: error.code,
|
|
244
|
+
// Business context
|
|
245
|
+
orderId: order.id,
|
|
246
|
+
userId: order.userId,
|
|
247
|
+
amount: order.total,
|
|
248
|
+
paymentMethod: order.paymentMethod,
|
|
249
|
+
// Request context
|
|
250
|
+
requestId: context.requestId,
|
|
251
|
+
// Recovery info
|
|
252
|
+
retryable: isRetryableError(error),
|
|
253
|
+
attemptNumber: attempt,
|
|
254
|
+
});
|
|
255
|
+
throw error;
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Categorize Errors
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// Tag errors for monitoring/alerting
|
|
263
|
+
logger.error("[AuthService]: Authentication failed", {
|
|
264
|
+
errorCategory: "SECURITY",
|
|
265
|
+
errorType: "INVALID_CREDENTIALS",
|
|
266
|
+
userId: attemptedUserId,
|
|
267
|
+
ipAddress: request.ip,
|
|
268
|
+
userAgent: request.headers["user-agent"],
|
|
269
|
+
});
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
## Sensitive Data
|
|
273
|
+
|
|
274
|
+
### Never Log
|
|
275
|
+
|
|
276
|
+
- Passwords or secrets
|
|
277
|
+
- Full credit card numbers
|
|
278
|
+
- Social security numbers
|
|
279
|
+
- API keys or tokens
|
|
280
|
+
- Personal health information
|
|
281
|
+
|
|
282
|
+
### Masking Patterns
|
|
283
|
+
|
|
284
|
+
```typescript
|
|
285
|
+
const maskEmail = (email: string) => {
|
|
286
|
+
const [local, domain] = email.split("@");
|
|
287
|
+
return `${local.slice(0, 2)}***@${domain}`;
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
const maskCardNumber = (card: string) => {
|
|
291
|
+
return `****-****-****-${card.slice(-4)}`;
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
logger.info("[PaymentService]: Payment authorized", {
|
|
295
|
+
email: maskEmail(user.email), // "jo***@example.com"
|
|
296
|
+
cardNumber: maskCardNumber(card), // "****-****-****-1234"
|
|
297
|
+
amount: order.total,
|
|
298
|
+
});
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Monorepo Logger Package
|
|
302
|
+
|
|
303
|
+
Create a shared logging package for consistency:
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
packages/
|
|
307
|
+
└── logging/
|
|
308
|
+
├── src/
|
|
309
|
+
│ └── index.ts
|
|
310
|
+
├── package.json
|
|
311
|
+
└── README.md
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
// packages/logging/src/index.ts
|
|
316
|
+
import pino from "pino";
|
|
317
|
+
|
|
318
|
+
export const createLogger = (service: string) => {
|
|
319
|
+
return pino({
|
|
320
|
+
name: service,
|
|
321
|
+
level: process.env.LOG_LEVEL || "info",
|
|
322
|
+
formatters: {
|
|
323
|
+
level: (label) => ({ level: label }),
|
|
324
|
+
},
|
|
325
|
+
base: {
|
|
326
|
+
service,
|
|
327
|
+
environment: process.env.NODE_ENV,
|
|
328
|
+
version: process.env.APP_VERSION,
|
|
329
|
+
},
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// Usage in apps
|
|
334
|
+
// apps/{{APP_NAME_1}}/src/index.ts
|
|
335
|
+
import { createLogger } from "@{{PROJECT_NAME}}/logging";
|
|
336
|
+
const logger = createLogger("{{APP_NAME_1}}");
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## Environment Configuration
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# .env
|
|
343
|
+
LOG_LEVEL=info # Minimum log level
|
|
344
|
+
LOG_FORMAT=json # json | pretty
|
|
345
|
+
LOG_DESTINATION=stdout # stdout | file | service
|
|
346
|
+
LOG_SERVICE_URL= # External logging service URL
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
## Observability Integration
|
|
350
|
+
|
|
351
|
+
### OpenTelemetry Context
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
import { trace, context } from "@opentelemetry/api";
|
|
355
|
+
|
|
356
|
+
function logWithTrace(level: string, message: string, data: object) {
|
|
357
|
+
const span = trace.getSpan(context.active());
|
|
358
|
+
const traceContext = span
|
|
359
|
+
? {
|
|
360
|
+
traceId: span.spanContext().traceId,
|
|
361
|
+
spanId: span.spanContext().spanId,
|
|
362
|
+
}
|
|
363
|
+
: {};
|
|
364
|
+
|
|
365
|
+
logger[level](message, { ...data, ...traceContext });
|
|
366
|
+
}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
## Quick Reference
|
|
370
|
+
|
|
371
|
+
### Log Level Decision Tree
|
|
372
|
+
|
|
373
|
+
```
|
|
374
|
+
Is it an error that needs attention? → ERROR
|
|
375
|
+
Is it unexpected but handled? → WARN
|
|
376
|
+
Is it a significant business event? → INFO
|
|
377
|
+
Is it helpful for debugging? → DEBUG
|
|
378
|
+
Is it very detailed/verbose? → TRACE
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### Checklist Before Logging
|
|
382
|
+
|
|
383
|
+
- [ ] Using structured format (not string interpolation)
|
|
384
|
+
- [ ] Service/class prefix in brackets
|
|
385
|
+
- [ ] Relevant context included
|
|
386
|
+
- [ ] Sensitive data masked
|
|
387
|
+
- [ ] Appropriate log level
|
|
388
|
+
- [ ] No expensive operations in log statement
|
|
389
|
+
|
|
390
|
+
## Related Skills
|
|
391
|
+
|
|
392
|
+
- See `.agents/skills/systematic-debugging/` for debugging workflows
|
|
393
|
+
- See `.agents/skills/verification-before-completion/` for testing logs
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orient-to-recent-work
|
|
3
|
+
description: Build a compact mental model of recent project activity before any non-trivial task. Use proactively at the start of a session and before any investigation, planning, refactor, or multi-file change. Skip only for trivial fixes (typos, isolated docs, version bumps, mechanical refactors with a known target).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Orient to recent work
|
|
7
|
+
|
|
8
|
+
Before starting a non-trivial task, build a compact mental model of what has happened recently in this repository. This prevents re-litigating settled decisions and surfaces context that may not be in code or docs.
|
|
9
|
+
|
|
10
|
+
## When to use
|
|
11
|
+
|
|
12
|
+
**Use proactively:**
|
|
13
|
+
- At the start of a session (before the first task)
|
|
14
|
+
- Before any investigation, planning, refactor, or multi-file change
|
|
15
|
+
- When picking up a thread after a break
|
|
16
|
+
|
|
17
|
+
**Skip for:**
|
|
18
|
+
- Single-line typo fixes
|
|
19
|
+
- Isolated documentation updates
|
|
20
|
+
- Dependency version bumps without logic changes
|
|
21
|
+
- Mechanical refactors with a known target
|
|
22
|
+
|
|
23
|
+
## Protocol (do once per session, hold the result)
|
|
24
|
+
|
|
25
|
+
1. **Read `CHANGELOG.md` [Unreleased]** — pending changes the team is preparing
|
|
26
|
+
2. **Read the most recent released section of `CHANGELOG.md`** — what just shipped
|
|
27
|
+
3. **Run `git log --oneline -20`** — recent commits at a glance
|
|
28
|
+
4. **For commits that touch files you'll modify, run `git show <hash> --stat`** — scope only, not the full diff
|
|
29
|
+
5. **Hold this mental model in working memory** for the session; re-run only if task scope changes dramatically
|
|
30
|
+
|
|
31
|
+
## Output format
|
|
32
|
+
|
|
33
|
+
A 3–5 line summary capturing:
|
|
34
|
+
- What's in flight (Unreleased highlights)
|
|
35
|
+
- What just shipped (last release)
|
|
36
|
+
- Any recent decisions affecting your task (naming, refactor, schema)
|
|
37
|
+
- If your task touches recently-modified files, append: `Recent touch on <files>: <commit summary>`
|
|
38
|
+
|
|
39
|
+
## Why
|
|
40
|
+
|
|
41
|
+
- Decisions have non-code context (commit messages, PR descriptions)
|
|
42
|
+
- Fresh sessions have no memory — this creates session-level orientation
|
|
43
|
+
- Prevents re-litigating recently-settled questions
|