syntra 0.1.3 → 0.2.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Cortex CLI
1
+ # Syntra CLI
2
2
 
3
- `syntra` is a CLI that scaffolds, manages, validates, and syncs an AI-assisted development framework across tools like GitHub Copilot, Claude Code, and Cursor.
3
+ Syntra is a CLI that scaffolds, manages, validates, and syncs an AI-assisted development framework across tools like GitHub Copilot, Claude Code, and Cursor.
4
4
 
5
5
  Core principle: **`ai/` is the source of truth**. Adapter folders (`.github/`, `.claude/`, `.cursor/`) are generated artifacts.
6
6
 
@@ -101,11 +101,19 @@ syntra add skill api-pagination
101
101
 
102
102
  If `sync.autoSync: true` in `ai/config.yml`, add operations trigger silent adapter sync.
103
103
 
104
+ For `task`, task IDs and task directories are read from `ai/config.yml`:
105
+
106
+ - `tasks.idPrefix` (default: `TASK-`)
107
+ - `tasks.activeDir` (default: `active`)
108
+ - `tasks.doneDir` (default: `done`)
109
+
110
+ Task file format requirements are documented in **Task Template Contract** below.
111
+
104
112
  ---
105
113
 
106
114
  ## `syntra done <taskId>`
107
115
 
108
- Moves a task from active to done:
116
+ Moves a task from the configured active directory to the configured done directory:
109
117
 
110
118
  ```bash
111
119
  syntra done TASK-001
@@ -146,7 +154,7 @@ Checks include:
146
154
  - `ai/config.yml` schema basics
147
155
  - instruction naming/format
148
156
  - agent references to instructions
149
- - task structure and references
157
+ - task structure and references (requires `Context`, `References`, `Dependencies`, `Steps`, `Acceptance Criteria`, `Notes`)
150
158
  - sync freshness/manual edit risk signals
151
159
 
152
160
  ```bash
@@ -169,10 +177,10 @@ syntra template save my-team-template
169
177
  syntra template list
170
178
  ```
171
179
 
172
- Saved templates are stored in:
180
+ Saved templates are currently stored in:
173
181
 
174
182
  ```text
175
- ~/.ai-fw/templates/
183
+ ~/.syntra/templates/
176
184
  ```
177
185
 
178
186
  ---
@@ -191,6 +199,47 @@ Typical sections:
191
199
 
192
200
  ---
193
201
 
202
+ ## Task Template Contract
203
+
204
+ Task files must follow this structure to pass validation:
205
+
206
+ - Required headings: `Context`, `References`, `Dependencies`, `Steps`, `Acceptance Criteria`, `Notes`
207
+ - File location: `ai/tasks/{tasks.activeDir}/{taskId}.task.md` while active
208
+ - Task ID prefix: must match `tasks.idPrefix` from `ai/config.yml`
209
+
210
+ Example:
211
+
212
+ ```markdown
213
+ # TASK-001: Add date utility validation
214
+
215
+ ## Context
216
+ Add a reusable date validation helper used by form input checks.
217
+
218
+ ## References
219
+ - **Agent**: [code-generator](../agents/code-generator.agent.md)
220
+ - **Instructions**:
221
+ - [architecture](../instructions/architecture.instructions.md)
222
+ - [testing](../instructions/testing.instructions.md)
223
+
224
+ ## Dependencies
225
+ None
226
+
227
+ ## Steps
228
+ 1. [ ] Add `isDateAfterToday` in `src/utils/date.ts`
229
+ 2. [ ] Add unit tests for happy path and edge cases
230
+ 3. [ ] Use helper in form validation flow
231
+
232
+ ## Acceptance Criteria
233
+ - [ ] Returns `true` only for strictly future dates
234
+ - [ ] Returns `false` for invalid or empty input
235
+ - [ ] Unit tests cover new logic and pass
236
+
237
+ ## Notes
238
+ Keep changes scoped to utility + tests + call site.
239
+ ```
240
+
241
+ ---
242
+
194
243
  ## Typical Workflow
195
244
 
196
245
  ```bash
@@ -4,7 +4,7 @@ import path from 'path';
4
4
  import { fsUtils } from '../utils/fs.js';
5
5
  import { logger } from '../utils/logger.js';
6
6
  function getTemplateRoot() {
7
- return path.join(os.homedir(), '.ai-fw', 'templates');
7
+ return path.join(os.homedir(), '.syntra', 'templates');
8
8
  }
9
9
  function ensureTemplateRoot() {
10
10
  fsUtils.mkdir(getTemplateRoot());
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,SAAS,eAAe;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,kBAAkB;IACvB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC9E,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC9E,OAAO;IACX,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACjE,OAAO;IACX,CAAC;IAED,kBAAkB,EAAE,CAAC;IAErB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,kBAAkB,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,OAAO,GAAG,EAAE;SACb,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAClD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAChF,OAAO;IACX,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAChC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,SAAS,eAAe;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,kBAAkB;IACvB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC9E,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC9E,OAAO;IACX,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACjE,OAAO;IACX,CAAC;IAED,kBAAkB,EAAE,CAAC;IAErB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,kBAAkB,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,OAAO,GAAG,EAAE;SACb,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAClD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAChF,OAAO;IACX,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAChC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntra",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "CLI tool that scaffolds, manages, and syncs an AI-assisted development framework across projects and AI tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",