@mindfoldhq/trellis 0.3.3 → 0.3.4

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 (81) hide show
  1. package/README.md +4 -4
  2. package/dist/cli/index.js +1 -0
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/init.d.ts +1 -0
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/update.d.ts.map +1 -1
  8. package/dist/commands/update.js +2 -7
  9. package/dist/commands/update.js.map +1 -1
  10. package/dist/configurators/index.d.ts.map +1 -1
  11. package/dist/configurators/index.js +15 -3
  12. package/dist/configurators/index.js.map +1 -1
  13. package/dist/configurators/kilo.d.ts +1 -1
  14. package/dist/configurators/kilo.d.ts.map +1 -1
  15. package/dist/configurators/kilo.js +2 -1
  16. package/dist/configurators/kilo.js.map +1 -1
  17. package/dist/configurators/qoder.d.ts +8 -0
  18. package/dist/configurators/qoder.d.ts.map +1 -0
  19. package/dist/configurators/qoder.js +52 -0
  20. package/dist/configurators/qoder.js.map +1 -0
  21. package/dist/migrations/manifests/0.3.4.json +21 -0
  22. package/dist/templates/claude/commands/trellis/record-session.md +12 -16
  23. package/dist/templates/codex/skills/record-session/SKILL.md +13 -17
  24. package/dist/templates/cursor/commands/trellis-record-session.md +12 -16
  25. package/dist/templates/extract.d.ts +7 -0
  26. package/dist/templates/extract.d.ts.map +1 -1
  27. package/dist/templates/extract.js +13 -0
  28. package/dist/templates/extract.js.map +1 -1
  29. package/dist/templates/gemini/commands/trellis/record-session.toml +12 -16
  30. package/dist/templates/iflow/commands/trellis/record-session.md +12 -16
  31. package/dist/templates/iflow/hooks/session-start.py +1 -0
  32. package/dist/templates/kilo/index.d.ts +3 -3
  33. package/dist/templates/kilo/index.d.ts.map +1 -1
  34. package/dist/templates/kilo/index.js +7 -7
  35. package/dist/templates/kilo/index.js.map +1 -1
  36. package/dist/templates/kilo/{commands/trellis → workflows}/record-session.md +12 -16
  37. package/dist/templates/kiro/skills/record-session/SKILL.md +13 -17
  38. package/dist/templates/opencode/commands/trellis/record-session.md +12 -16
  39. package/dist/templates/qoder/index.d.ts +18 -0
  40. package/dist/templates/qoder/index.d.ts.map +1 -0
  41. package/dist/templates/qoder/index.js +40 -0
  42. package/dist/templates/qoder/index.js.map +1 -0
  43. package/dist/templates/qoder/skills/before-backend-dev/SKILL.md +18 -0
  44. package/dist/templates/qoder/skills/before-frontend-dev/SKILL.md +18 -0
  45. package/dist/templates/qoder/skills/brainstorm/SKILL.md +479 -0
  46. package/dist/templates/qoder/skills/break-loop/SKILL.md +130 -0
  47. package/dist/templates/qoder/skills/check-backend/SKILL.md +18 -0
  48. package/dist/templates/qoder/skills/check-cross-layer/SKILL.md +158 -0
  49. package/dist/templates/qoder/skills/check-frontend/SKILL.md +18 -0
  50. package/dist/templates/qoder/skills/create-command/SKILL.md +101 -0
  51. package/dist/templates/qoder/skills/finish-work/SKILL.md +134 -0
  52. package/dist/templates/qoder/skills/integrate-skill/SKILL.md +221 -0
  53. package/dist/templates/qoder/skills/onboard/SKILL.md +363 -0
  54. package/dist/templates/qoder/skills/record-session/SKILL.md +63 -0
  55. package/dist/templates/qoder/skills/start/SKILL.md +326 -0
  56. package/dist/templates/qoder/skills/update-spec/SKILL.md +290 -0
  57. package/dist/templates/trellis/scripts/add_session.py +3 -3
  58. package/dist/templates/trellis/scripts/common/cli_adapter.py +125 -20
  59. package/dist/templates/trellis/scripts/common/git_context.py +120 -0
  60. package/dist/templates/trellis/scripts/multi_agent/plan.py +4 -1
  61. package/dist/templates/trellis/scripts/multi_agent/start.py +5 -1
  62. package/dist/templates/trellis/scripts/task.py +26 -0
  63. package/dist/types/ai-tools.d.ts +3 -3
  64. package/dist/types/ai-tools.d.ts.map +1 -1
  65. package/dist/types/ai-tools.js +8 -0
  66. package/dist/types/ai-tools.js.map +1 -1
  67. package/package.json +1 -1
  68. /package/dist/templates/kilo/{commands/trellis → workflows}/before-backend-dev.md +0 -0
  69. /package/dist/templates/kilo/{commands/trellis → workflows}/before-frontend-dev.md +0 -0
  70. /package/dist/templates/kilo/{commands/trellis → workflows}/brainstorm.md +0 -0
  71. /package/dist/templates/kilo/{commands/trellis → workflows}/break-loop.md +0 -0
  72. /package/dist/templates/kilo/{commands/trellis → workflows}/check-backend.md +0 -0
  73. /package/dist/templates/kilo/{commands/trellis → workflows}/check-cross-layer.md +0 -0
  74. /package/dist/templates/kilo/{commands/trellis → workflows}/check-frontend.md +0 -0
  75. /package/dist/templates/kilo/{commands/trellis → workflows}/create-command.md +0 -0
  76. /package/dist/templates/kilo/{commands/trellis → workflows}/finish-work.md +0 -0
  77. /package/dist/templates/kilo/{commands/trellis → workflows}/integrate-skill.md +0 -0
  78. /package/dist/templates/kilo/{commands/trellis → workflows}/onboard.md +0 -0
  79. /package/dist/templates/kilo/{commands/trellis → workflows}/parallel.md +0 -0
  80. /package/dist/templates/kilo/{commands/trellis → workflows}/start.md +0 -0
  81. /package/dist/templates/kilo/{commands/trellis → workflows}/update-spec.md +0 -0
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": "0.3.4",
3
+ "description": "Qoder platform, Kilo workflows, record-session task awareness",
4
+ "breaking": false,
5
+ "recommendMigrate": true,
6
+ "changelog": "**Enhancements:**\n- feat(platform): add Qoder support as skills-based platform (.qoder/skills/)\n- feat(record-session): enforce task archive check before recording; add --mode record for focused context output\n- feat(record-session): sync record-session prompt across all 9 platforms\n- feat(task): auto-commit after archive, add --no-commit flag\n\n**Bug Fixes:**\n- fix(kilo): rename commands/trellis/ to workflows/ to match Kilo official spec\n- fix(iflow): add IFLOW_NON_INTERACTIVE check in session-start hook\n- fix(multi-agent): clear CLAUDECODE env var to allow nested CLI launch\n- fix(update): skip workflow.md and workspace/index.md during update (user-customizable content)",
7
+ "migrations": [
8
+ {
9
+ "type": "rename-dir",
10
+ "from": ".kilocode/commands/trellis",
11
+ "to": ".kilocode/workflows",
12
+ "description": "Kilo uses workflows/ instead of commands/trellis/ per official spec"
13
+ },
14
+ {
15
+ "type": "delete",
16
+ "path": ".kilocode/commands",
17
+ "description": "Remove empty commands/ directory after workflow migration"
18
+ }
19
+ ],
20
+ "notes": "Kilo users: run trellis update to migrate commands/trellis/ to workflows/. New Qoder platform available via --qoder flag."
21
+ }
@@ -4,12 +4,18 @@
4
4
 
5
5
  ---
6
6
 
7
- ## Record Work Progress (Simplified - Only 2 Steps)
7
+ ## Record Work Progress
8
8
 
9
- ### Step 1: Get Context
9
+ ### Step 1: Get Context & Check Tasks
10
10
 
11
11
  ```bash
12
- python3 ./.trellis/scripts/get_context.py
12
+ python3 ./.trellis/scripts/get_context.py --mode record
13
+ ```
14
+
15
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
16
+
17
+ ```bash
18
+ python3 ./.trellis/scripts/task.py archive <task-name>
13
19
  ```
14
20
 
15
21
  ### Step 2: One-Click Add Session
@@ -38,16 +44,7 @@ EOF
38
44
  - [OK] Appends session to journal-N.md
39
45
  - [OK] Auto-detects line count, creates new file if >2000 lines
40
46
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
41
-
42
- ---
43
-
44
- ## Archive Completed Task (if any)
45
-
46
- If a task was completed this session:
47
-
48
- ```bash
49
- python3 ./.trellis/scripts/task.py archive <task-name>
50
- ```
47
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
51
48
 
52
49
  ---
53
50
 
@@ -55,8 +52,7 @@ python3 ./.trellis/scripts/task.py archive <task-name>
55
52
 
56
53
  | Command | Purpose |
57
54
  |---------|---------|
58
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
55
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
59
56
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
60
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
61
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
57
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
62
58
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: record-session
3
- description: "Method 1: Simple parameters"
3
+ description: "Record work progress after human has tested and committed code"
4
4
  ---
5
5
 
6
6
  [!] **Prerequisite**: This skill should only be used AFTER the human has tested and committed the code.
@@ -9,12 +9,18 @@ description: "Method 1: Simple parameters"
9
9
 
10
10
  ---
11
11
 
12
- ## Record Work Progress (Simplified - Only 2 Steps)
12
+ ## Record Work Progress
13
13
 
14
- ### Step 1: Get Context
14
+ ### Step 1: Get Context & Check Tasks
15
15
 
16
16
  ```bash
17
- python3 ./.trellis/scripts/get_context.py
17
+ python3 ./.trellis/scripts/get_context.py --mode record
18
+ ```
19
+
20
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
21
+
22
+ ```bash
23
+ python3 ./.trellis/scripts/task.py archive <task-name>
18
24
  ```
19
25
 
20
26
  ### Step 2: One-Click Add Session
@@ -43,16 +49,7 @@ EOF
43
49
  - [OK] Appends session to journal-N.md
44
50
  - [OK] Auto-detects line count, creates new file if >2000 lines
45
51
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
46
-
47
- ---
48
-
49
- ## Archive Completed Task (if any)
50
-
51
- If a task was completed this session:
52
-
53
- ```bash
54
- python3 ./.trellis/scripts/task.py archive <task-name>
55
- ```
52
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
56
53
 
57
54
  ---
58
55
 
@@ -60,8 +57,7 @@ python3 ./.trellis/scripts/task.py archive <task-name>
60
57
 
61
58
  | Command | Purpose |
62
59
  |---------|---------|
63
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
60
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
64
61
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
65
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
66
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
62
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
67
63
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
@@ -4,12 +4,18 @@
4
4
 
5
5
  ---
6
6
 
7
- ## Record Work Progress (Simplified - Only 2 Steps)
7
+ ## Record Work Progress
8
8
 
9
- ### Step 1: Get Context
9
+ ### Step 1: Get Context & Check Tasks
10
10
 
11
11
  ```bash
12
- python3 ./.trellis/scripts/get_context.py
12
+ python3 ./.trellis/scripts/get_context.py --mode record
13
+ ```
14
+
15
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
16
+
17
+ ```bash
18
+ python3 ./.trellis/scripts/task.py archive <task-name>
13
19
  ```
14
20
 
15
21
  ### Step 2: One-Click Add Session
@@ -38,16 +44,7 @@ EOF
38
44
  - [OK] Appends session to journal-N.md
39
45
  - [OK] Auto-detects line count, creates new file if >2000 lines
40
46
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
41
-
42
- ---
43
-
44
- ## Archive Completed Task (if any)
45
-
46
- If a task was completed this session:
47
-
48
- ```bash
49
- python3 ./.trellis/scripts/task.py archive <task-name>
50
- ```
47
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
51
48
 
52
49
  ---
53
50
 
@@ -55,8 +52,7 @@ python3 ./.trellis/scripts/task.py archive <task-name>
55
52
 
56
53
  | Command | Purpose |
57
54
  |---------|---------|
58
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
55
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
59
56
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
60
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
61
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
57
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
62
58
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
@@ -80,6 +80,13 @@ export declare function getAntigravityTemplatePath(): string;
80
80
  * @deprecated Use getAntigravityTemplatePath() instead.
81
81
  */
82
82
  export declare function getAntigravitySourcePath(): string;
83
+ /**
84
+ * Get the path to the qoder templates directory.
85
+ *
86
+ * This reads from src/templates/qoder/ (development) or dist/templates/qoder/ (production).
87
+ * These are GENERIC templates, not the Trellis project's own .qoder/ configuration.
88
+ */
89
+ export declare function getQoderTemplatePath(): string;
83
90
  /**
84
91
  * Read a file from the .trellis directory
85
92
  * @param relativePath - Path relative to .trellis/ (e.g., 'scripts/task.py')
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/templates/extract.ts"],"names":[],"mappings":"AAQA,KAAK,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAU/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAShD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAS7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAS5C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAS5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GACf,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/templates/extract.ts"],"names":[],"mappings":"AAQA,KAAK,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAU/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAShD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAS7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAS5C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAS5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAS7C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GACf,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -146,6 +146,19 @@ export function getAntigravityTemplatePath() {
146
146
  export function getAntigravitySourcePath() {
147
147
  return getAntigravityTemplatePath();
148
148
  }
149
+ /**
150
+ * Get the path to the qoder templates directory.
151
+ *
152
+ * This reads from src/templates/qoder/ (development) or dist/templates/qoder/ (production).
153
+ * These are GENERIC templates, not the Trellis project's own .qoder/ configuration.
154
+ */
155
+ export function getQoderTemplatePath() {
156
+ const templatePath = path.join(__dirname, "qoder");
157
+ if (fs.existsSync(templatePath)) {
158
+ return templatePath;
159
+ }
160
+ throw new Error("Could not find qoder templates directory. Expected at templates/qoder/");
161
+ }
149
162
  /**
150
163
  * Read a file from the .trellis directory
151
164
  * @param relativePath - Path relative to .trellis/ (e.g., 'scripts/task.py')
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/templates/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAI3C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,mDAAmD;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,0BAA0B,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA0B,EAC1B,QAAgB;IAEhB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,YAAoB;IAC7C,OAAO,eAAe,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,uBAAuB,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,eAAuB,EACvB,QAAgB,EAChB,OAAkC;IAElC,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAC7B,GAAW,EACX,IAAY,EACZ,OAAkC;IAElC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,YAAY,GAChB,OAAO,EAAE,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/templates/extract.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,18 @@ prompt = """
7
7
 
8
8
  ---
9
9
 
10
- ## Record Work Progress (Simplified - Only 2 Steps)
10
+ ## Record Work Progress
11
11
 
12
- ### Step 1: Get Context
12
+ ### Step 1: Get Context & Check Tasks
13
13
 
14
14
  ```bash
15
- python3 ./.trellis/scripts/get_context.py
15
+ python3 ./.trellis/scripts/get_context.py --mode record
16
+ ```
17
+
18
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
19
+
20
+ ```bash
21
+ python3 ./.trellis/scripts/task.py archive <task-name>
16
22
  ```
17
23
 
18
24
  ### Step 2: One-Click Add Session
@@ -41,16 +47,7 @@ EOF
41
47
  - [OK] Appends session to journal-N.md
42
48
  - [OK] Auto-detects line count, creates new file if >2000 lines
43
49
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
44
-
45
- ---
46
-
47
- ## Archive Completed Task (if any)
48
-
49
- If a task was completed this session:
50
-
51
- ```bash
52
- python3 ./.trellis/scripts/task.py archive <task-name>
53
- ```
50
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
54
51
 
55
52
  ---
56
53
 
@@ -58,9 +55,8 @@ python3 ./.trellis/scripts/task.py archive <task-name>
58
55
 
59
56
  | Command | Purpose |
60
57
  |---------|---------|
61
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
58
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
62
59
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
63
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
64
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
60
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
65
61
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
66
62
  """
@@ -4,12 +4,18 @@
4
4
 
5
5
  ---
6
6
 
7
- ## Record Work Progress (Simplified - Only 2 Steps)
7
+ ## Record Work Progress
8
8
 
9
- ### Step 1: Get Context
9
+ ### Step 1: Get Context & Check Tasks
10
10
 
11
11
  ```bash
12
- python3 ./.trellis/scripts/get_context.py
12
+ python3 ./.trellis/scripts/get_context.py --mode record
13
+ ```
14
+
15
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
16
+
17
+ ```bash
18
+ python3 ./.trellis/scripts/task.py archive <task-name>
13
19
  ```
14
20
 
15
21
  ### Step 2: One-Click Add Session
@@ -38,16 +44,7 @@ EOF
38
44
  - [OK] Appends session to journal-N.md
39
45
  - [OK] Auto-detects line count, creates new file if >2000 lines
40
46
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
41
-
42
- ---
43
-
44
- ## Archive Completed Task (if any)
45
-
46
- If a task was completed this session:
47
-
48
- ```bash
49
- python3 ./.trellis/scripts/task.py archive <task-name>
50
- ```
47
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
51
48
 
52
49
  ---
53
50
 
@@ -55,8 +52,7 @@ python3 ./.trellis/scripts/task.py archive <task-name>
55
52
 
56
53
  | Command | Purpose |
57
54
  |---------|---------|
58
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
55
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
59
56
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
60
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
61
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
57
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
62
58
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
@@ -29,6 +29,7 @@ def should_skip_injection() -> bool:
29
29
  return (
30
30
  os.environ.get("CLAUDE_NON_INTERACTIVE") == "1"
31
31
  or os.environ.get("OPENCODE_NON_INTERACTIVE") == "1"
32
+ or os.environ.get("IFLOW_NON_INTERACTIVE") == "1"
32
33
  )
33
34
 
34
35
 
@@ -6,11 +6,11 @@
6
6
  *
7
7
  * Directory structure:
8
8
  * kilo/
9
- * └── commands/trellis/ # Slash commands
9
+ * └── workflows/ # Workflow files
10
10
  */
11
- export interface CommandTemplate {
11
+ export interface WorkflowTemplate {
12
12
  name: string;
13
13
  content: string;
14
14
  }
15
- export declare function getAllCommands(): CommandTemplate[];
15
+ export declare function getAllWorkflows(): WorkflowTemplate[];
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/kilo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,IAAI,eAAe,EAAE,CAalD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/kilo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,IAAI,gBAAgB,EAAE,CAapD"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Directory structure:
8
8
  * kilo/
9
- * └── commands/trellis/ # Slash commands
9
+ * └── workflows/ # Workflow files
10
10
  */
11
11
  import { readdirSync, readFileSync } from "node:fs";
12
12
  import { dirname, join } from "node:path";
@@ -24,16 +24,16 @@ function listFiles(dir) {
24
24
  return [];
25
25
  }
26
26
  }
27
- export function getAllCommands() {
28
- const commands = [];
29
- const files = listFiles("commands/trellis");
27
+ export function getAllWorkflows() {
28
+ const workflows = [];
29
+ const files = listFiles("workflows");
30
30
  for (const file of files) {
31
31
  if (file.endsWith(".md")) {
32
32
  const name = file.replace(".md", "");
33
- const content = readTemplate(`commands/trellis/${file}`);
34
- commands.push({ name, content });
33
+ const content = readTemplate(`workflows/${file}`);
34
+ workflows.push({ name, content });
35
35
  }
36
36
  }
37
- return commands;
37
+ return workflows;
38
38
  }
39
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/kilo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/kilo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -4,12 +4,18 @@
4
4
 
5
5
  ---
6
6
 
7
- ## Record Work Progress (Simplified - Only 2 Steps)
7
+ ## Record Work Progress
8
8
 
9
- ### Step 1: Get Context
9
+ ### Step 1: Get Context & Check Tasks
10
10
 
11
11
  ```bash
12
- python3 ./.trellis/scripts/get_context.py
12
+ python3 ./.trellis/scripts/get_context.py --mode record
13
+ ```
14
+
15
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
16
+
17
+ ```bash
18
+ python3 ./.trellis/scripts/task.py archive <task-name>
13
19
  ```
14
20
 
15
21
  ### Step 2: One-Click Add Session
@@ -38,16 +44,7 @@ EOF
38
44
  - [OK] Appends session to journal-N.md
39
45
  - [OK] Auto-detects line count, creates new file if >2000 lines
40
46
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
41
-
42
- ---
43
-
44
- ## Archive Completed Task (if any)
45
-
46
- If a task was completed this session:
47
-
48
- ```bash
49
- python3 ./.trellis/scripts/task.py archive <task-name>
50
- ```
47
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
51
48
 
52
49
  ---
53
50
 
@@ -55,8 +52,7 @@ python3 ./.trellis/scripts/task.py archive <task-name>
55
52
 
56
53
  | Command | Purpose |
57
54
  |---------|---------|
58
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
55
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
59
56
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
60
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
61
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
57
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
62
58
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: record-session
3
- description: "Method 1: Simple parameters"
3
+ description: "Record work progress after human has tested and committed code"
4
4
  ---
5
5
 
6
6
  [!] **Prerequisite**: This skill should only be used AFTER the human has tested and committed the code.
@@ -9,12 +9,18 @@ description: "Method 1: Simple parameters"
9
9
 
10
10
  ---
11
11
 
12
- ## Record Work Progress (Simplified - Only 2 Steps)
12
+ ## Record Work Progress
13
13
 
14
- ### Step 1: Get Context
14
+ ### Step 1: Get Context & Check Tasks
15
15
 
16
16
  ```bash
17
- python3 ./.trellis/scripts/get_context.py
17
+ python3 ./.trellis/scripts/get_context.py --mode record
18
+ ```
19
+
20
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
21
+
22
+ ```bash
23
+ python3 ./.trellis/scripts/task.py archive <task-name>
18
24
  ```
19
25
 
20
26
  ### Step 2: One-Click Add Session
@@ -43,16 +49,7 @@ EOF
43
49
  - [OK] Appends session to journal-N.md
44
50
  - [OK] Auto-detects line count, creates new file if >2000 lines
45
51
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
46
-
47
- ---
48
-
49
- ## Archive Completed Task (if any)
50
-
51
- If a task was completed this session:
52
-
53
- ```bash
54
- python3 ./.trellis/scripts/task.py archive <task-name>
55
- ```
52
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
56
53
 
57
54
  ---
58
55
 
@@ -60,8 +57,7 @@ python3 ./.trellis/scripts/task.py archive <task-name>
60
57
 
61
58
  | Command | Purpose |
62
59
  |---------|---------|
63
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
60
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
64
61
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
65
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
66
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
62
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
67
63
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
@@ -4,12 +4,18 @@
4
4
 
5
5
  ---
6
6
 
7
- ## Record Work Progress (Simplified - Only 2 Steps)
7
+ ## Record Work Progress
8
8
 
9
- ### Step 1: Get Context
9
+ ### Step 1: Get Context & Check Tasks
10
10
 
11
11
  ```bash
12
- python3 ./.trellis/scripts/get_context.py
12
+ python3 ./.trellis/scripts/get_context.py --mode record
13
+ ```
14
+
15
+ [!] If MY ACTIVE TASKS shows any completed tasks, archive them FIRST:
16
+
17
+ ```bash
18
+ python3 ./.trellis/scripts/task.py archive <task-name>
13
19
  ```
14
20
 
15
21
  ### Step 2: One-Click Add Session
@@ -38,16 +44,7 @@ EOF
38
44
  - [OK] Appends session to journal-N.md
39
45
  - [OK] Auto-detects line count, creates new file if >2000 lines
40
46
  - [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
41
-
42
- ---
43
-
44
- ## Archive Completed Task (if any)
45
-
46
- If a task was completed this session:
47
-
48
- ```bash
49
- python3 ./.trellis/scripts/task.py archive <task-name>
50
- ```
47
+ - [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
51
48
 
52
49
  ---
53
50
 
@@ -55,8 +52,7 @@ python3 ./.trellis/scripts/task.py archive <task-name>
55
52
 
56
53
  | Command | Purpose |
57
54
  |---------|---------|
58
- | `python3 ./.trellis/scripts/get_context.py` | Get all context info |
55
+ | `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
59
56
  | `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
60
- | `python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>]` | Create new task directory |
61
- | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task |
57
+ | `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
62
58
  | `python3 ./.trellis/scripts/task.py list` | List active tasks |
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Qoder skill templates
3
+ *
4
+ * These are GENERIC templates for user projects.
5
+ * Do NOT use Trellis project's own .qoder/ directory (which may be customized).
6
+ *
7
+ * Directory structure:
8
+ * qoder/
9
+ * └── skills/
10
+ * └── <skill-name>/
11
+ * └── SKILL.md
12
+ */
13
+ export interface SkillTemplate {
14
+ name: string;
15
+ content: string;
16
+ }
17
+ export declare function getAllSkills(): SkillTemplate[];
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/qoder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwBH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAS9C"}