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.
- package/LICENSE +21 -0
- package/README.md +141 -0
- package/briefs/code-reviewer/brief.yaml +8 -0
- package/briefs/code-reviewer/knowledge/review-standards.md +32 -0
- package/briefs/code-reviewer/personality.md +19 -0
- package/briefs/code-reviewer/skills/architecture-review/SKILL.md +76 -0
- package/briefs/code-reviewer/skills/review-process/SKILL.md +41 -0
- package/briefs/code-reviewer/skills/verification/SKILL.md +47 -0
- package/briefs/data-analyst/brief.yaml +8 -0
- package/briefs/data-analyst/knowledge/metrics-reference.md +43 -0
- package/briefs/data-analyst/personality.md +23 -0
- package/briefs/data-analyst/skills/metrics-framework/SKILL.md +90 -0
- package/briefs/data-analyst/skills/sql-query-builder/SKILL.md +115 -0
- package/briefs/devops-sre/brief.yaml +12 -0
- package/briefs/devops-sre/knowledge/runbook.md +69 -0
- package/briefs/devops-sre/personality.md +18 -0
- package/briefs/devops-sre/skills/ci-cd-github-actions/SKILL.md +114 -0
- package/briefs/devops-sre/skills/monitoring-observability/SKILL.md +394 -0
- package/briefs/devops-sre/skills/systematic-debugging/SKILL.md +46 -0
- package/briefs/devops-sre/skills/verification/SKILL.md +47 -0
- package/briefs/frontend-design/brief.yaml +8 -0
- package/briefs/frontend-design/knowledge/design-principles.md +43 -0
- package/briefs/frontend-design/personality.md +19 -0
- package/briefs/frontend-design/skills/design-review-checklist/SKILL.md +151 -0
- package/briefs/frontend-design/skills/web-design-guidelines/SKILL.md +39 -0
- package/briefs/fullstack-dev/brief.yaml +9 -0
- package/briefs/fullstack-dev/personality.md +18 -0
- package/briefs/growth-engineer/brief.yaml +8 -0
- package/briefs/growth-engineer/knowledge/growth-framework.md +83 -0
- package/briefs/growth-engineer/personality.md +19 -0
- package/briefs/growth-engineer/skills/analytics-setup/SKILL.md +109 -0
- package/briefs/growth-engineer/skills/brainstorming/SKILL.md +55 -0
- package/briefs/growth-engineer/skills/content-strategy/SKILL.md +93 -0
- package/briefs/growth-engineer/skills/seo-audit/SKILL.md +412 -0
- package/briefs/growth-engineer/skills/seo-audit/evals/evals.json +136 -0
- package/briefs/growth-engineer/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/briefs/nextjs-fullstack/brief.yaml +12 -0
- package/briefs/nextjs-fullstack/knowledge/conventions.md +57 -0
- package/briefs/nextjs-fullstack/personality.md +19 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/SKILL.md +153 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/async-patterns.md +87 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/bundling.md +180 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/data-patterns.md +297 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/debug-tricks.md +105 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/directives.md +73 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/error-handling.md +227 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/file-conventions.md +140 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/font.md +245 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/functions.md +108 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/hydration-error.md +91 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/image.md +173 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/metadata.md +301 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/parallel-routes.md +287 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/route-handlers.md +146 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/rsc-boundaries.md +159 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/runtime-selection.md +39 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/scripts.md +141 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/self-hosting.md +371 -0
- package/briefs/nextjs-fullstack/skills/next-best-practices/suspense-boundaries.md +67 -0
- package/briefs/nextjs-fullstack/skills/tdd/SKILL.md +53 -0
- package/briefs/product-manager/brief.yaml +8 -0
- package/briefs/product-manager/knowledge/pm-toolkit.md +51 -0
- package/briefs/product-manager/personality.md +19 -0
- package/briefs/product-manager/skills/brainstorming/SKILL.md +55 -0
- package/briefs/product-manager/skills/specification/SKILL.md +76 -0
- package/briefs/qa-engineer/brief.yaml +11 -0
- package/briefs/qa-engineer/knowledge/testing-patterns.md +54 -0
- package/briefs/qa-engineer/personality.md +24 -0
- package/briefs/qa-engineer/skills/qa-test-and-fix/SKILL.md +101 -0
- package/briefs/qa-engineer/skills/regression-testing/SKILL.md +95 -0
- package/briefs/security-auditor/brief.yaml +12 -0
- package/briefs/security-auditor/knowledge/code-patterns.md +49 -0
- package/briefs/security-auditor/knowledge/owasp-cheatsheet.md +75 -0
- package/briefs/security-auditor/personality.md +23 -0
- package/briefs/security-auditor/skills/security-review/SKILL.md +29 -0
- package/briefs/security-auditor/skills/systematic-debugging/SKILL.md +46 -0
- package/briefs/security-auditor/skills/verification/SKILL.md +47 -0
- package/briefs/startup-builder/brief.yaml +8 -0
- package/briefs/startup-builder/knowledge/startup-phases.md +64 -0
- package/briefs/startup-builder/personality.md +18 -0
- package/briefs/startup-builder/skills/ceo-review/SKILL.md +95 -0
- package/briefs/startup-builder/skills/launch-strategy/SKILL.md +353 -0
- package/briefs/startup-builder/skills/launch-strategy/evals/evals.json +91 -0
- package/briefs/startup-builder/skills/tdd/SKILL.md +53 -0
- package/briefs/startup-builder/skills/verification/SKILL.md +47 -0
- package/briefs/startup-kit/brief.yaml +9 -0
- package/briefs/startup-kit/personality.md +18 -0
- package/briefs/tech-writer/brief.yaml +8 -0
- package/briefs/tech-writer/knowledge/style-guide.md +54 -0
- package/briefs/tech-writer/personality.md +19 -0
- package/briefs/tech-writer/skills/api-documentation/SKILL.md +390 -0
- package/briefs/tech-writer/skills/plan-and-execute/SKILL.md +54 -0
- package/briefs/tech-writer/skills/release-notes/SKILL.md +77 -0
- package/briefs/typescript-strict/brief.yaml +8 -0
- package/briefs/typescript-strict/knowledge/type-patterns.md +117 -0
- package/briefs/typescript-strict/personality.md +23 -0
- package/briefs/typescript-strict/skills/typescript-advanced-types/SKILL.md +717 -0
- package/dist/brief.d.ts +13 -0
- package/dist/brief.d.ts.map +1 -0
- package/dist/brief.js +90 -0
- package/dist/brief.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +180 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler.d.ts +25 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +253 -0
- package/dist/compiler.js.map +1 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +255 -0
- package/dist/index.js.map +1 -0
- package/dist/injector.d.ts +17 -0
- package/dist/injector.d.ts.map +1 -0
- package/dist/injector.js +76 -0
- package/dist/injector.js.map +1 -0
- package/dist/lock.d.ts +8 -0
- package/dist/lock.d.ts.map +1 -0
- package/dist/lock.js +50 -0
- package/dist/lock.js.map +1 -0
- package/dist/resolver.d.ts +24 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +135 -0
- package/dist/resolver.js.map +1 -0
- package/dist/types.d.ts +61 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -0
- package/package.json +64 -0
- package/registry.yaml +91 -0
- package/templates/default/brief.yaml +7 -0
- package/templates/default/knowledge/.gitkeep +0 -0
- package/templates/default/personality.md +12 -0
- package/templates/security/brief.yaml +6 -0
- package/templates/security/knowledge/.gitkeep +0 -0
- 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,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
|