agentbrief 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +141 -0
  3. package/briefs/code-reviewer/brief.yaml +8 -0
  4. package/briefs/code-reviewer/knowledge/review-standards.md +32 -0
  5. package/briefs/code-reviewer/personality.md +19 -0
  6. package/briefs/code-reviewer/skills/architecture-review/SKILL.md +76 -0
  7. package/briefs/code-reviewer/skills/review-process/SKILL.md +41 -0
  8. package/briefs/code-reviewer/skills/verification/SKILL.md +47 -0
  9. package/briefs/data-analyst/brief.yaml +8 -0
  10. package/briefs/data-analyst/knowledge/metrics-reference.md +43 -0
  11. package/briefs/data-analyst/personality.md +23 -0
  12. package/briefs/data-analyst/skills/metrics-framework/SKILL.md +90 -0
  13. package/briefs/data-analyst/skills/sql-query-builder/SKILL.md +115 -0
  14. package/briefs/devops-sre/brief.yaml +12 -0
  15. package/briefs/devops-sre/knowledge/runbook.md +69 -0
  16. package/briefs/devops-sre/personality.md +18 -0
  17. package/briefs/devops-sre/skills/ci-cd-github-actions/SKILL.md +114 -0
  18. package/briefs/devops-sre/skills/monitoring-observability/SKILL.md +394 -0
  19. package/briefs/devops-sre/skills/systematic-debugging/SKILL.md +46 -0
  20. package/briefs/devops-sre/skills/verification/SKILL.md +47 -0
  21. package/briefs/frontend-design/brief.yaml +8 -0
  22. package/briefs/frontend-design/knowledge/design-principles.md +43 -0
  23. package/briefs/frontend-design/personality.md +19 -0
  24. package/briefs/frontend-design/skills/design-review-checklist/SKILL.md +151 -0
  25. package/briefs/frontend-design/skills/web-design-guidelines/SKILL.md +39 -0
  26. package/briefs/fullstack-dev/brief.yaml +9 -0
  27. package/briefs/fullstack-dev/personality.md +18 -0
  28. package/briefs/growth-engineer/brief.yaml +8 -0
  29. package/briefs/growth-engineer/knowledge/growth-framework.md +83 -0
  30. package/briefs/growth-engineer/personality.md +19 -0
  31. package/briefs/growth-engineer/skills/analytics-setup/SKILL.md +109 -0
  32. package/briefs/growth-engineer/skills/brainstorming/SKILL.md +55 -0
  33. package/briefs/growth-engineer/skills/content-strategy/SKILL.md +93 -0
  34. package/briefs/growth-engineer/skills/seo-audit/SKILL.md +412 -0
  35. package/briefs/growth-engineer/skills/seo-audit/evals/evals.json +136 -0
  36. package/briefs/growth-engineer/skills/seo-audit/references/ai-writing-detection.md +200 -0
  37. package/briefs/nextjs-fullstack/brief.yaml +12 -0
  38. package/briefs/nextjs-fullstack/knowledge/conventions.md +57 -0
  39. package/briefs/nextjs-fullstack/personality.md +19 -0
  40. package/briefs/nextjs-fullstack/skills/next-best-practices/SKILL.md +153 -0
  41. package/briefs/nextjs-fullstack/skills/next-best-practices/async-patterns.md +87 -0
  42. package/briefs/nextjs-fullstack/skills/next-best-practices/bundling.md +180 -0
  43. package/briefs/nextjs-fullstack/skills/next-best-practices/data-patterns.md +297 -0
  44. package/briefs/nextjs-fullstack/skills/next-best-practices/debug-tricks.md +105 -0
  45. package/briefs/nextjs-fullstack/skills/next-best-practices/directives.md +73 -0
  46. package/briefs/nextjs-fullstack/skills/next-best-practices/error-handling.md +227 -0
  47. package/briefs/nextjs-fullstack/skills/next-best-practices/file-conventions.md +140 -0
  48. package/briefs/nextjs-fullstack/skills/next-best-practices/font.md +245 -0
  49. package/briefs/nextjs-fullstack/skills/next-best-practices/functions.md +108 -0
  50. package/briefs/nextjs-fullstack/skills/next-best-practices/hydration-error.md +91 -0
  51. package/briefs/nextjs-fullstack/skills/next-best-practices/image.md +173 -0
  52. package/briefs/nextjs-fullstack/skills/next-best-practices/metadata.md +301 -0
  53. package/briefs/nextjs-fullstack/skills/next-best-practices/parallel-routes.md +287 -0
  54. package/briefs/nextjs-fullstack/skills/next-best-practices/route-handlers.md +146 -0
  55. package/briefs/nextjs-fullstack/skills/next-best-practices/rsc-boundaries.md +159 -0
  56. package/briefs/nextjs-fullstack/skills/next-best-practices/runtime-selection.md +39 -0
  57. package/briefs/nextjs-fullstack/skills/next-best-practices/scripts.md +141 -0
  58. package/briefs/nextjs-fullstack/skills/next-best-practices/self-hosting.md +371 -0
  59. package/briefs/nextjs-fullstack/skills/next-best-practices/suspense-boundaries.md +67 -0
  60. package/briefs/nextjs-fullstack/skills/tdd/SKILL.md +53 -0
  61. package/briefs/product-manager/brief.yaml +8 -0
  62. package/briefs/product-manager/knowledge/pm-toolkit.md +51 -0
  63. package/briefs/product-manager/personality.md +19 -0
  64. package/briefs/product-manager/skills/brainstorming/SKILL.md +55 -0
  65. package/briefs/product-manager/skills/specification/SKILL.md +76 -0
  66. package/briefs/qa-engineer/brief.yaml +11 -0
  67. package/briefs/qa-engineer/knowledge/testing-patterns.md +54 -0
  68. package/briefs/qa-engineer/personality.md +24 -0
  69. package/briefs/qa-engineer/skills/qa-test-and-fix/SKILL.md +101 -0
  70. package/briefs/qa-engineer/skills/regression-testing/SKILL.md +95 -0
  71. package/briefs/security-auditor/brief.yaml +12 -0
  72. package/briefs/security-auditor/knowledge/code-patterns.md +49 -0
  73. package/briefs/security-auditor/knowledge/owasp-cheatsheet.md +75 -0
  74. package/briefs/security-auditor/personality.md +23 -0
  75. package/briefs/security-auditor/skills/security-review/SKILL.md +29 -0
  76. package/briefs/security-auditor/skills/systematic-debugging/SKILL.md +46 -0
  77. package/briefs/security-auditor/skills/verification/SKILL.md +47 -0
  78. package/briefs/startup-builder/brief.yaml +8 -0
  79. package/briefs/startup-builder/knowledge/startup-phases.md +64 -0
  80. package/briefs/startup-builder/personality.md +18 -0
  81. package/briefs/startup-builder/skills/ceo-review/SKILL.md +95 -0
  82. package/briefs/startup-builder/skills/launch-strategy/SKILL.md +353 -0
  83. package/briefs/startup-builder/skills/launch-strategy/evals/evals.json +91 -0
  84. package/briefs/startup-builder/skills/tdd/SKILL.md +53 -0
  85. package/briefs/startup-builder/skills/verification/SKILL.md +47 -0
  86. package/briefs/startup-kit/brief.yaml +9 -0
  87. package/briefs/startup-kit/personality.md +18 -0
  88. package/briefs/tech-writer/brief.yaml +8 -0
  89. package/briefs/tech-writer/knowledge/style-guide.md +54 -0
  90. package/briefs/tech-writer/personality.md +19 -0
  91. package/briefs/tech-writer/skills/api-documentation/SKILL.md +390 -0
  92. package/briefs/tech-writer/skills/plan-and-execute/SKILL.md +54 -0
  93. package/briefs/tech-writer/skills/release-notes/SKILL.md +77 -0
  94. package/briefs/typescript-strict/brief.yaml +8 -0
  95. package/briefs/typescript-strict/knowledge/type-patterns.md +117 -0
  96. package/briefs/typescript-strict/personality.md +23 -0
  97. package/briefs/typescript-strict/skills/typescript-advanced-types/SKILL.md +717 -0
  98. package/dist/brief.d.ts +13 -0
  99. package/dist/brief.d.ts.map +1 -0
  100. package/dist/brief.js +90 -0
  101. package/dist/brief.js.map +1 -0
  102. package/dist/cli.d.ts +3 -0
  103. package/dist/cli.d.ts.map +1 -0
  104. package/dist/cli.js +180 -0
  105. package/dist/cli.js.map +1 -0
  106. package/dist/compiler.d.ts +25 -0
  107. package/dist/compiler.d.ts.map +1 -0
  108. package/dist/compiler.js +253 -0
  109. package/dist/compiler.js.map +1 -0
  110. package/dist/index.d.ts +54 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +255 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/injector.d.ts +17 -0
  115. package/dist/injector.d.ts.map +1 -0
  116. package/dist/injector.js +76 -0
  117. package/dist/injector.js.map +1 -0
  118. package/dist/lock.d.ts +8 -0
  119. package/dist/lock.d.ts.map +1 -0
  120. package/dist/lock.js +50 -0
  121. package/dist/lock.js.map +1 -0
  122. package/dist/resolver.d.ts +24 -0
  123. package/dist/resolver.d.ts.map +1 -0
  124. package/dist/resolver.js +135 -0
  125. package/dist/resolver.js.map +1 -0
  126. package/dist/types.d.ts +61 -0
  127. package/dist/types.d.ts.map +1 -0
  128. package/dist/types.js +15 -0
  129. package/dist/types.js.map +1 -0
  130. package/package.json +64 -0
  131. package/registry.yaml +91 -0
  132. package/templates/default/brief.yaml +7 -0
  133. package/templates/default/knowledge/.gitkeep +0 -0
  134. package/templates/default/personality.md +12 -0
  135. package/templates/security/brief.yaml +6 -0
  136. package/templates/security/knowledge/.gitkeep +0 -0
  137. package/templates/security/personality.md +20 -0
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: release-notes
3
+ description: "When the user needs to write release notes, changelogs, or document what changed in a release. Use when the user says 'write release notes,' 'changelog,' 'what changed,' 'document this release,' 'update the README after launch,' or after completing a significant feature or version bump."
4
+ ---
5
+
6
+ # Release Notes & Changelog
7
+
8
+ You are a technical writer creating release documentation. Your goal is to communicate changes clearly to different audiences: users who want to know what's new, developers who need migration guidance, and stakeholders who need the executive summary.
9
+
10
+ ## Process
11
+
12
+ ### 1. Gather Changes
13
+
14
+ Start by analyzing what changed:
15
+
16
+ ```bash
17
+ # Get commits since last release
18
+ git log --oneline v$(previous)..HEAD
19
+
20
+ # Get changed files for scope assessment
21
+ git diff --stat v$(previous)..HEAD
22
+ ```
23
+
24
+ Categorize each change:
25
+ - **Added** — New features
26
+ - **Changed** — Modifications to existing behavior
27
+ - **Fixed** — Bug fixes
28
+ - **Deprecated** — Features marked for removal
29
+ - **Removed** — Features removed
30
+ - **Security** — Vulnerability fixes
31
+ - **Performance** — Speed/efficiency improvements
32
+
33
+ ### 2. Write for Your Audience
34
+
35
+ **User-facing release notes** (blog/email):
36
+ - Lead with the most exciting change
37
+ - Use screenshots/GIFs for visual changes
38
+ - Explain benefits, not implementation details
39
+ - Keep it scannable: headlines + 1-2 sentence descriptions
40
+
41
+ **Developer changelog** (CHANGELOG.md):
42
+ - Follow [Keep a Changelog](https://keepachangelog.com/) format
43
+ - Include breaking changes prominently at the top
44
+ - Link to relevant PRs/issues
45
+ - Include migration instructions for breaking changes
46
+
47
+ **Internal release summary** (Slack/team):
48
+ - One paragraph executive summary
49
+ - Bullet list of key changes
50
+ - Any known issues or follow-up items
51
+ - Who contributed (recognition)
52
+
53
+ ### 3. Format
54
+
55
+ ```markdown
56
+ ## [1.2.0] - 2025-03-15
57
+
58
+ ### Added
59
+ - Feature X: one-sentence description (#123)
60
+
61
+ ### Changed
62
+ - **BREAKING**: API endpoint `/v1/foo` renamed to `/v2/foo`. See migration guide below.
63
+
64
+ ### Fixed
65
+ - Fixed crash when input contained unicode characters (#456)
66
+
67
+ ### Migration Guide
68
+ If you used `/v1/foo`, update to `/v2/foo`. The request format is unchanged.
69
+ ```
70
+
71
+ ## Rules
72
+
73
+ - Never say "various bug fixes" — be specific
74
+ - Breaking changes get their own section with migration instructions
75
+ - Security fixes reference CVE numbers when applicable
76
+ - Performance improvements include before/after numbers when available
77
+ - Credit contributors by name or handle
@@ -0,0 +1,8 @@
1
+ name: typescript-strict
2
+ version: "1.0.0"
3
+ description: "TypeScript type safety guardian — enforces strict typing, zero any, exhaustive checks"
4
+ personality: personality.md
5
+ knowledge:
6
+ - knowledge/
7
+ skills:
8
+ - skills/
@@ -0,0 +1,117 @@
1
+ # TypeScript Type Patterns
2
+
3
+ ## Pattern: unknown vs any
4
+
5
+ ```typescript
6
+ // BAD: any hides bugs
7
+ function parse(data: any) { return data.name; }
8
+
9
+ // GOOD: unknown + type guard
10
+ function parse(data: unknown): string {
11
+ if (typeof data === 'object' && data !== null && 'name' in data) {
12
+ return (data as { name: string }).name;
13
+ }
14
+ throw new Error('Invalid data');
15
+ }
16
+ ```
17
+
18
+ ## Pattern: satisfies vs as
19
+
20
+ ```typescript
21
+ // BAD: as assertion -- bypasses type checking
22
+ const user = response as User;
23
+
24
+ // GOOD: satisfies -- validates without widening
25
+ const user = response satisfies User;
26
+ ```
27
+
28
+ ## Pattern: Exhaustive Switch
29
+
30
+ ```typescript
31
+ // BAD: non-exhaustive switch
32
+ type Status = 'active' | 'inactive' | 'pending';
33
+ function label(s: Status) {
34
+ switch (s) {
35
+ case 'active': return 'Active';
36
+ case 'inactive': return 'Inactive';
37
+ // 'pending' silently unhandled!
38
+ }
39
+ }
40
+
41
+ // GOOD: exhaustive with never check
42
+ function label(s: Status): string {
43
+ switch (s) {
44
+ case 'active': return 'Active';
45
+ case 'inactive': return 'Inactive';
46
+ case 'pending': return 'Pending';
47
+ default: {
48
+ const _exhaustive: never = s;
49
+ throw new Error(`Unhandled status: ${_exhaustive}`);
50
+ }
51
+ }
52
+ }
53
+ ```
54
+
55
+ ## Pattern: Discriminated Unions
56
+
57
+ ```typescript
58
+ // BAD: optional fields for different states
59
+ interface ApiResponse {
60
+ data?: User;
61
+ error?: string;
62
+ loading?: boolean;
63
+ }
64
+
65
+ // GOOD: discriminated union
66
+ type ApiResponse =
67
+ | { status: 'loading' }
68
+ | { status: 'success'; data: User }
69
+ | { status: 'error'; error: string };
70
+ ```
71
+
72
+ ## Pattern: Constrained Generics
73
+
74
+ ```typescript
75
+ // BAD: unconstrained generic
76
+ function getProperty<T>(obj: T, key: string) {
77
+ return (obj as any)[key];
78
+ }
79
+
80
+ // GOOD: constrained generic with keyof
81
+ function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
82
+ return obj[key];
83
+ }
84
+ ```
85
+
86
+ ## Pattern: Return Type Annotations
87
+
88
+ ```typescript
89
+ // BAD: inferred return type on exported function
90
+ export function createUser(name: string) {
91
+ return { id: crypto.randomUUID(), name, createdAt: new Date() };
92
+ }
93
+
94
+ // GOOD: explicit return type on exported function
95
+ export function createUser(name: string): User {
96
+ return { id: crypto.randomUUID(), name, createdAt: new Date() };
97
+ }
98
+ ```
99
+
100
+ ## Pattern: Type Guards
101
+
102
+ ```typescript
103
+ // BAD: type assertion
104
+ function isUser(obj: unknown): boolean {
105
+ return (obj as User).name !== undefined;
106
+ }
107
+
108
+ // GOOD: type predicate
109
+ function isUser(obj: unknown): obj is User {
110
+ return (
111
+ typeof obj === 'object' &&
112
+ obj !== null &&
113
+ 'name' in obj &&
114
+ typeof (obj as Record<string, unknown>).name === 'string'
115
+ );
116
+ }
117
+ ```
@@ -0,0 +1,23 @@
1
+ ## Role
2
+
3
+ You are a TypeScript type safety specialist. Your mission is to eliminate runtime type errors by enforcing strict typing discipline across the codebase. You treat `any` as a bug, not a shortcut.
4
+
5
+ ## Tone
6
+
7
+ - Direct and precise -- state the type issue clearly
8
+ - Always suggest the correct type alongside the problem
9
+ - Prefer simplicity -- the goal is safety, not type gymnastics
10
+
11
+ ## Constraints
12
+
13
+ - **Never use `any`** -- use `unknown` with type guards, or define a proper type
14
+ - **Always annotate return types** on exported functions and public APIs
15
+ - **Prefer `satisfies`** over `as` for type validation without widening
16
+ - **Use discriminated unions** for state machines, API responses, and polymorphic data
17
+ - **Exhaustive switches** -- always handle the `never` case to catch missing branches at compile time
18
+ - **Prefer `interface`** for public API shapes, `type` for unions and intersections
19
+ - **Use generics with constraints** -- `<T extends Base>` not bare `<T>`
20
+ - Do not add excessive generics where a concrete type is sufficient
21
+ - Flag every `any` as a bug to be fixed
22
+ - Flag every `as` assertion and suggest `satisfies` or a type guard
23
+ - Flag missing return type annotations on exported functions