@jahanxu/trellis 0.5.6 → 0.5.7

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.
@@ -47,6 +47,7 @@ For triggered tasks, include all sections below:
47
47
  | **Hit a gotcha** | Learned that X must be done before Y | Relevant code-spec + "Common Mistakes" section |
48
48
  | **Established a convention** | Team agreed on naming pattern | `quality-guidelines.md` |
49
49
  | **New thinking trigger** | "Don't forget to check X before doing Y" | `guides/*.md` (as a checklist item, not detailed rules) |
50
+ | **Role workflow insight** | Better PRD structure, prototype checklist | `roles/{your-role}/*.md` |
50
51
 
51
52
  **Key Insight**: Code-spec updates are NOT just for problems. Every feature implementation contains design decisions and contracts that future AI/developers need to execute safely.
52
53
 
@@ -62,11 +63,31 @@ For triggered tasks, include all sections below:
62
63
  ├── frontend/ # Frontend coding standards
63
64
  │ ├── index.md # Overview and links
64
65
  │ └── *.md # Topic-specific guidelines
65
- └── guides/ # Thinking checklists (NOT coding specs!)
66
- ├── index.md # Guide index
67
- └── *.md # Topic-specific guides
66
+ ├── guides/ # Thinking checklists (NOT coding specs!)
67
+ ├── index.md # Guide index
68
+ └── *.md # Topic-specific guides
69
+ └── roles/ # Role-specific work standards (collaboration mode)
70
+ ├── pm/ # PM: PRD standards, changelog conventions
71
+ ├── designer/ # Designer: prototype standards, mock data conventions
72
+ └── frontend-impl/ # Frontend: API integration standards, code quality
68
73
  ```
69
74
 
75
+ ### Role-Aware Updates (Collaboration Mode)
76
+
77
+ If the project uses three-role collaboration (`.trellis/roles.json` exists):
78
+
79
+ 1. **Check your role** by reading `.trellis/.developer` and `.trellis/roles.json`
80
+ 2. **Update your role spec** in `roles/{your-role}/` for role-specific learnings
81
+ 3. **Update tech stack specs** in `backend/` or `frontend/` for reusable patterns
82
+
83
+ | Your Role | Your Role Spec Dir | Also Update |
84
+ |-----------|-------------------|-------------|
85
+ | pm | `roles/pm/` | (rarely needs tech specs) |
86
+ | designer | `roles/designer/` | `frontend/component-guidelines.md` |
87
+ | frontend | `roles/frontend-impl/` | `frontend/`, `backend/` as relevant |
88
+
89
+ **Decision Rule**: "Is this specific to my role's workflow?" → `roles/{role}/`. "Is this a tech pattern any developer would use?" → `backend/` or `frontend/`.
90
+
70
91
  ### CRITICAL: Code-Spec vs Guide - Know the Difference
71
92
 
72
93
  | Type | Location | Purpose | Content Style |
@@ -41,8 +41,14 @@ export declare const getContextScript: string;
41
41
  export declare const addSessionScript: string;
42
42
  export declare const createBootstrapScript: string;
43
43
  export declare const specRolesPm: string;
44
+ export declare const specRolesPmPrdTemplate: string;
45
+ export declare const specRolesPmChangelogTemplate: string;
44
46
  export declare const specRolesDesigner: string;
47
+ export declare const specRolesDesignerPrototypeGuidelines: string;
48
+ export declare const specRolesDesignerChangelogTemplate: string;
45
49
  export declare const specRolesFrontendImpl: string;
50
+ export declare const specRolesFrontendImplApiIntegration: string;
51
+ export declare const specRolesFrontendImplChangelogTemplate: string;
46
52
  export declare const workflowMdTemplate: string;
47
53
  export declare const worktreeYamlTemplate: string;
48
54
  export declare const gitignoreTemplate: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAcH,eAAO,MAAM,WAAW,QAAsC,CAAC;AAG/D,eAAO,MAAM,UAAU,QAA6C,CAAC;AACrE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,eAAe,QAA8C,CAAC;AAC3E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,cAAc,QAA6C,CAAC;AACzE,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,cAAc,QAA6C,CAAC;AACzE,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,WAAW,QAA0C,CAAC;AAGnE,eAAO,MAAM,cAAc,QAAkD,CAAC;AAC9E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,iBAAiB,QAAiD,CAAC;AAChF,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,kBAAkB,QAE9B,CAAC;AACF,eAAO,MAAM,cAAc,QAA8C,CAAC;AAG1E,eAAO,MAAM,kBAAkB,QAA2C,CAAC;AAC3E,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAC7E,eAAO,MAAM,UAAU,QAAkC,CAAC;AAC1D,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AAGF,eAAO,MAAM,WAAW,QAAyC,CAAC;AAClE,eAAO,MAAM,iBAAiB,QAA+C,CAAC;AAC9E,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AAGF,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,QAAgC,CAAC;AAClE,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoCnD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAcH,eAAO,MAAM,WAAW,QAAsC,CAAC;AAG/D,eAAO,MAAM,UAAU,QAA6C,CAAC;AACrE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,eAAe,QAA8C,CAAC;AAC3E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,cAAc,QAA6C,CAAC;AACzE,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,cAAc,QAA6C,CAAC;AACzE,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,WAAW,QAA0C,CAAC;AAGnE,eAAO,MAAM,cAAc,QAAkD,CAAC;AAC9E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,iBAAiB,QAAiD,CAAC;AAChF,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,kBAAkB,QAE9B,CAAC;AACF,eAAO,MAAM,cAAc,QAA8C,CAAC;AAG1E,eAAO,MAAM,kBAAkB,QAA2C,CAAC;AAC3E,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAC7E,eAAO,MAAM,UAAU,QAAkC,CAAC;AAC1D,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AAGF,eAAO,MAAM,WAAW,QAAyC,CAAC;AAClE,eAAO,MAAM,sBAAsB,QAElC,CAAC;AACF,eAAO,MAAM,4BAA4B,QAExC,CAAC;AAGF,eAAO,MAAM,iBAAiB,QAA+C,CAAC;AAC9E,eAAO,MAAM,oCAAoC,QAEhD,CAAC;AACF,eAAO,MAAM,kCAAkC,QAE9C,CAAC;AAGF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mCAAmC,QAE/C,CAAC;AACF,eAAO,MAAM,sCAAsC,QAElD,CAAC;AAGF,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,QAAgC,CAAC;AAClE,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoCnD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA+BrD"}
@@ -52,10 +52,18 @@ export const taskScript = readTemplate("scripts/task.py");
52
52
  export const getContextScript = readTemplate("scripts/get_context.py");
53
53
  export const addSessionScript = readTemplate("scripts/add_session.py");
54
54
  export const createBootstrapScript = readTemplate("scripts/create_bootstrap.py");
55
- // Role spec templates
55
+ // Role spec templates - PM
56
56
  export const specRolesPm = readTemplate("spec/roles/pm/index.md");
57
+ export const specRolesPmPrdTemplate = readTemplate("spec/roles/pm/prd-template.md");
58
+ export const specRolesPmChangelogTemplate = readTemplate("spec/roles/pm/changelog-template.md");
59
+ // Role spec templates - Designer
57
60
  export const specRolesDesigner = readTemplate("spec/roles/designer/index.md");
61
+ export const specRolesDesignerPrototypeGuidelines = readTemplate("spec/roles/designer/prototype-guidelines.md");
62
+ export const specRolesDesignerChangelogTemplate = readTemplate("spec/roles/designer/changelog-template.md");
63
+ // Role spec templates - Frontend
58
64
  export const specRolesFrontendImpl = readTemplate("spec/roles/frontend-impl/index.md");
65
+ export const specRolesFrontendImplApiIntegration = readTemplate("spec/roles/frontend-impl/api-integration.md");
66
+ export const specRolesFrontendImplChangelogTemplate = readTemplate("spec/roles/frontend-impl/changelog-template.md");
59
67
  // Configuration files
60
68
  export const workflowMdTemplate = readTemplate("workflow.md");
61
69
  export const worktreeYamlTemplate = readTemplate("worktree.yaml");
@@ -101,9 +109,18 @@ export function getAllScripts() {
101
109
  */
102
110
  export function getAllRoleSpecs() {
103
111
  const specs = new Map();
112
+ // PM
104
113
  specs.set("pm/index.md", specRolesPm);
114
+ specs.set("pm/prd-template.md", specRolesPmPrdTemplate);
115
+ specs.set("pm/changelog-template.md", specRolesPmChangelogTemplate);
116
+ // Designer
105
117
  specs.set("designer/index.md", specRolesDesigner);
118
+ specs.set("designer/prototype-guidelines.md", specRolesDesignerPrototypeGuidelines);
119
+ specs.set("designer/changelog-template.md", specRolesDesignerChangelogTemplate);
120
+ // Frontend
106
121
  specs.set("frontend-impl/index.md", specRolesFrontendImpl);
122
+ specs.set("frontend-impl/api-integration.md", specRolesFrontendImplApiIntegration);
123
+ specs.set("frontend-impl/changelog-template.md", specRolesFrontendImplChangelogTemplate);
107
124
  return specs;
108
125
  }
109
126
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ # CHANGELOG Convention (Designer)
2
+
3
+ > Guidelines for maintaining the prototype CHANGELOG.
4
+
5
+ ---
6
+
7
+ ## Format
8
+
9
+ Each `/trellis:handoff` appends one row to the CHANGELOG table:
10
+
11
+ ```markdown
12
+ | Date | Author | Type | Summary | Files |
13
+ |------|--------|------|---------|-------|
14
+ | YYYY-MM-DD HH:mm | developer-name | Type | One sentence (max 80 chars) | key files |
15
+ ```
16
+
17
+ ## Type Classification
18
+
19
+ | Type | When to Use |
20
+ |------|-------------|
21
+ | New | New component or page prototype created |
22
+ | Update | Existing component modified (layout, interaction, mock data) |
23
+ | Delete | Component removed |
24
+ | Refactor | Component restructured without changing UI behavior |
25
+
26
+ ## Best Practices
27
+
28
+ - Keep summaries under 80 characters
29
+ - Reference component names changed (e.g., "Updated LoginForm validation UX")
30
+ - Note mock data changes that affect Frontend replacement work
31
+ - Flag any deviations from the PRD with brief rationale
@@ -0,0 +1,65 @@
1
+ # Prototype Guidelines
2
+
3
+ > Standards for creating interactive prototypes with mock data.
4
+
5
+ ---
6
+
7
+ ## Prototype Standards
8
+
9
+ ### Must Be Runnable
10
+
11
+ Prototypes are NOT static mockups. They must:
12
+ - Render without errors in the browser
13
+ - Include all user interactions (click, input, navigation)
14
+ - Use inline mock data that simulates real API responses
15
+
16
+ ### Mock Data Convention
17
+
18
+ ```tsx
19
+ // CORRECT: Inline mock with clear TODO marker
20
+ const mockUser = {
21
+ id: "1",
22
+ email: "test@example.com",
23
+ name: "Test User",
24
+ };
25
+
26
+ const handleLogin = async () => {
27
+ // TODO: replace with real API call
28
+ await new Promise((r) => setTimeout(r, 800));
29
+ setUser(mockUser);
30
+ };
31
+ ```
32
+
33
+ ```tsx
34
+ // WRONG: Separate mock service (makes it harder for Frontend to find and replace)
35
+ import { mockLoginService } from "../mocks/auth";
36
+ ```
37
+
38
+ **Rules**:
39
+ - All mock data inline in the component file
40
+ - Every mock marked with `// TODO: replace with real API`
41
+ - Use realistic but clearly fake data
42
+
43
+ ### Component Structure
44
+
45
+ - One component per file
46
+ - Props interface defined for every component
47
+ - Clear parent-child hierarchy
48
+ - Responsive layout using the project's design system
49
+
50
+ ### File Naming
51
+
52
+ - Components: `PascalCase.tsx` (e.g., `LoginForm.tsx`)
53
+ - Hooks: `use{Name}.ts` (e.g., `useFormValidation.ts`)
54
+ - Utilities: `camelCase.ts` (e.g., `formatDate.ts`)
55
+
56
+ ## Handoff Checklist
57
+
58
+ Before running `/trellis:handoff`, verify:
59
+
60
+ - [ ] All components render without console errors
61
+ - [ ] Mock data locations documented with file:line references
62
+ - [ ] Component hierarchy described
63
+ - [ ] "Needs frontend implementation" items listed
64
+ - [ ] Responsive behavior verified at common breakpoints
65
+ - [ ] Accessibility basics: labels, alt text, keyboard navigation
@@ -0,0 +1,74 @@
1
+ # API Integration Guidelines
2
+
3
+ > Standards for replacing mock data with real API calls.
4
+
5
+ ---
6
+
7
+ ## Mock Replacement Process
8
+
9
+ ### Step 1: Find All Mocks
10
+
11
+ Search for TODO markers left by the Designer:
12
+
13
+ ```bash
14
+ grep -rn "TODO: replace with real API" deliverables/prototypes/
15
+ ```
16
+
17
+ ### Step 2: Replace Pattern
18
+
19
+ ```tsx
20
+ // BEFORE (Designer's mock)
21
+ const handleLogin = async () => {
22
+ // TODO: replace with real API call
23
+ await new Promise((r) => setTimeout(r, 800));
24
+ setUser(mockUser);
25
+ };
26
+
27
+ // AFTER (Frontend implementation)
28
+ const handleLogin = async () => {
29
+ try {
30
+ setLoading(true);
31
+ const user = await authApi.login({ email, password });
32
+ setUser(user);
33
+ } catch (error) {
34
+ setError(getErrorMessage(error));
35
+ } finally {
36
+ setLoading(false);
37
+ }
38
+ };
39
+ ```
40
+
41
+ ### Step 3: Required States
42
+
43
+ Every API call must handle:
44
+
45
+ | State | Implementation |
46
+ |-------|---------------|
47
+ | Loading | Show spinner or skeleton |
48
+ | Success | Render data |
49
+ | Error | Show error message with retry option |
50
+ | Empty | Show empty state message |
51
+
52
+ ## Error Handling
53
+
54
+ - Use the project's standard error handling pattern
55
+ - Map API error codes to user-friendly messages
56
+ - Log errors for debugging but don't expose internals to users
57
+ - Implement retry for transient failures (network errors, 5xx)
58
+
59
+ ## Testing Requirements
60
+
61
+ - Unit tests for business logic (state management, data transforms)
62
+ - Integration tests for API call flows
63
+ - Mock API responses in tests (don't hit real endpoints)
64
+
65
+ ## Handoff Checklist
66
+
67
+ Before running `/trellis:handoff`, verify:
68
+
69
+ - [ ] All `// TODO: replace with real API` markers resolved
70
+ - [ ] Every API call has loading, error, and empty states
71
+ - [ ] Error messages are user-friendly
72
+ - [ ] TypeScript compiles without errors
73
+ - [ ] Lint and format checks pass
74
+ - [ ] Core logic has unit tests
@@ -0,0 +1,32 @@
1
+ # CHANGELOG Convention (Frontend)
2
+
3
+ > Guidelines for maintaining the production code CHANGELOG.
4
+
5
+ ---
6
+
7
+ ## Format
8
+
9
+ Each `/trellis:handoff` appends one row to the CHANGELOG table:
10
+
11
+ ```markdown
12
+ | Date | Author | Type | Summary | Files |
13
+ |------|--------|------|---------|-------|
14
+ | YYYY-MM-DD HH:mm | developer-name | Type | One sentence (max 80 chars) | key files |
15
+ ```
16
+
17
+ ## Type Classification
18
+
19
+ | Type | When to Use |
20
+ |------|-------------|
21
+ | New | New feature implementation (API integration, business logic) |
22
+ | Update | Existing implementation modified |
23
+ | Delete | Feature or code removed |
24
+ | Refactor | Code restructured without changing behavior |
25
+
26
+ ## Best Practices
27
+
28
+ - Keep summaries under 80 characters
29
+ - Reference API endpoints integrated (e.g., "Integrated POST /api/auth/login")
30
+ - Note any deviations from the prototype with rationale
31
+ - List remaining technical debt or known issues
32
+ - Include test coverage summary when relevant
@@ -0,0 +1,31 @@
1
+ # CHANGELOG Convention (PM)
2
+
3
+ > Guidelines for maintaining the requirements CHANGELOG.
4
+
5
+ ---
6
+
7
+ ## Format
8
+
9
+ Each `/trellis:handoff` appends one row to the CHANGELOG table:
10
+
11
+ ```markdown
12
+ | Date | Author | Type | Summary | Files |
13
+ |------|--------|------|---------|-------|
14
+ | YYYY-MM-DD HH:mm | developer-name | Type | One sentence (max 80 chars) | key files |
15
+ ```
16
+
17
+ ## Type Classification
18
+
19
+ | Type | When to Use |
20
+ |------|-------------|
21
+ | New | New PRD or user story document created |
22
+ | Update | Existing requirement modified (scope change, clarification) |
23
+ | Delete | Requirement removed or deprecated |
24
+ | Refactor | Document restructured without changing requirements |
25
+
26
+ ## Best Practices
27
+
28
+ - Keep summaries under 80 characters
29
+ - Reference specific sections changed (e.g., "Updated US-03 acceptance criteria")
30
+ - Note if the change affects downstream roles (Designer/Frontend)
31
+ - Include the reason for changes when non-obvious
@@ -0,0 +1,58 @@
1
+ # PRD Template
2
+
3
+ > Standard template for Product Requirements Documents.
4
+
5
+ ---
6
+
7
+ ## {Feature Name}
8
+
9
+ ### Goal
10
+
11
+ What problem are we solving? Why now?
12
+
13
+ ### User Stories
14
+
15
+ | ID | As a... | I want to... | So that... |
16
+ |----|---------|-------------|------------|
17
+ | US-01 | | | |
18
+ | US-02 | | | |
19
+
20
+ ### Functional Requirements
21
+
22
+ 1. **FR-01**: (Description)
23
+ - Input: ...
24
+ - Output: ...
25
+ - Constraints: ...
26
+
27
+ ### Non-Functional Requirements
28
+
29
+ - Performance: ...
30
+ - Accessibility: ...
31
+ - Browser support: ...
32
+
33
+ ### Edge Cases & Error Scenarios
34
+
35
+ | Scenario | Expected Behavior |
36
+ |----------|-------------------|
37
+ | | |
38
+
39
+ ### Acceptance Criteria
40
+
41
+ - [ ] (Criterion 1 — must be testable)
42
+ - [ ] (Criterion 2)
43
+
44
+ ### Dependencies
45
+
46
+ - **Designer**: (What the designer needs to know)
47
+ - **Frontend**: (What the frontend developer needs to know)
48
+ - **External**: (APIs, services, third-party dependencies)
49
+
50
+ ### Open Questions
51
+
52
+ - [ ] (Any unresolved questions)
53
+
54
+ ### References
55
+
56
+ - Figma: (link)
57
+ - API docs: (link)
58
+ - Related PRDs: (link)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jahanxu/trellis",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
4
4
  "description": "AI capabilities grow like ivy — Trellis provides the structure to guide them along a disciplined path",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",