cortex-tms 2.4.0 β†’ 2.5.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,50 +1,137 @@
1
1
  # Cortex TMS 🧠
2
2
 
3
- **The Universal AI-Optimized Project Boilerplate (v2.1.1)**
3
+ **The Universal AI-Optimized Project Boilerplate (v2.5.0)**
4
4
 
5
- Cortex TMS is a **meta-framework** for organizing project documentation to maximize AI agent performance. It's not a runtime libraryβ€”it's a **structural pattern** that separates high-signal "Source of Truth" from noisy "Historical Context."
5
+ Cortex TMS is an **interactive operating system for AI-assisted development**. It's not just documentationβ€”it's an **activation layer** that turns your repository into a machine-legible project constitution with intelligent tooling for version management and AI collaboration.
6
6
 
7
- **Current Status**: βœ… **Production Ready** | [NPM Package](https://www.npmjs.com/package/cortex-tms) | [GitHub Template](https://github.com/cortex-tms/cortex-tms)
7
+ **Current Status**: βœ… **Stable / Production Ready** | [NPM Package](https://www.npmjs.com/package/cortex-tms) | [GitHub Repository](https://github.com/jantonca/cortex-tms)
8
8
 
9
9
  ---
10
10
 
11
- ## πŸš€ Quick Start
12
-
13
- ### Option 1: CLI Tool (Recommended)
11
+ ## πŸš€ Instant Activation
14
12
 
15
13
  Get started in under 60 seconds:
16
14
 
17
15
  ```bash
18
- mkdir my-project && cd my-project
16
+ # 1. Initialize your project
19
17
  npx cortex-tms init
18
+
19
+ # 2. Open the Project Cockpit
20
+ npx cortex-tms status
21
+
22
+ # 3. Activate your AI Agent
23
+ npx cortex-tms prompt init-session
24
+ # (Copies project-aware prompt to clipboard!)
25
+
26
+ # 4. Check version health
27
+ npx cortex-tms migrate
20
28
  ```
21
29
 
22
- Choose your scope (Nano/Standard/Enterprise) and start building with AI-optimized documentation.
30
+ Choose your scope (Nano/Standard/Enterprise) and start building with AI-optimized documentation and intelligent CLI tooling.
31
+
32
+ πŸ“– **New here?** The Essential 7 prompts in `PROMPTS.md` will guide you through the entire development lifecycle.
33
+
34
+ ---
35
+
36
+ ## 🎯 The Philosophy: Signal over Noise
37
+
38
+ Traditional repos drown AI agents in thousands of lines of historical tasks and stale documentation. **Cortex TMS** forces agents into a "Tiered" approach:
39
+
40
+ 1. **HOT (Active)**: `NEXT-TASKS.md`, `PROMPTS.md` β€” What we are doing _now_ and how to ask the AI for help.
41
+ 2. **WARM (Truth)**: `docs/core/` β€” The project's "Laws" (Architecture, Patterns, Domain Logic).
42
+ 3. **COLD (History)**: `docs/archive/` β€” Historical changelogs (Ignore unless asked).
43
+
44
+ **Why this works**: AI agents have limited context windows. Reading everything is wasteful. The tier system maximizes signal, minimizes noise.
45
+
46
+ ---
23
47
 
24
- ### Option 2: GitHub Template
48
+ ## πŸ› οΈ CLI Commands
25
49
 
26
- Click "Use this template" on the repository homepage to create a new project with all TMS files pre-configured.
50
+ Cortex TMS provides 6 production-ready commands:
27
51
 
28
- ### Option 3: Manual Installation
52
+ ### `cortex-tms tutorial`
53
+ Interactive walkthrough teaching the "Cortex Way" - perfect for first-time users.
29
54
 
30
55
  ```bash
31
- npm install -g cortex-tms
32
- cortex-tms init --scope standard
56
+ cortex-tms tutorial # Start the guided tour
33
57
  ```
34
58
 
35
- πŸ“– **New here?** Read the [Quick Start Guide](docs/guides/QUICK-START.md) or [Migration Guide](docs/guides/MIGRATION-GUIDE.md) for existing projects.
59
+ **What You'll Learn**:
60
+ - Project Dashboard: Using `status` to see your cockpit
61
+ - AI Activation: Using `prompt` to activate project-aware AI agents
62
+ - Zero-Drift Governance: Automated version sync with `docs:sync`
63
+ - Health Checks: Understanding `validate` and the Archive Protocol
64
+ - Safe Migration: Fearless template upgrades with backup/rollback
65
+
66
+ **Navigation**: Use arrow keys and Enter to progress, select Exit to quit anytime
36
67
 
37
68
  ---
38
69
 
39
- ## πŸš€ The Philosophy: Signal over Noise
70
+ ### `cortex-tms init`
71
+ Initialize TMS structure in your project with interactive scope selection.
40
72
 
41
- Traditional repos drown AI agents in thousands of lines of historical tasks and stale documentation. **Cortex TMS** forces the agent into a "Tiered" approach:
73
+ ```bash
74
+ cortex-tms init # Interactive mode
75
+ cortex-tms init --scope standard # Non-interactive
76
+ cortex-tms init --dry-run # Preview changes
77
+ ```
42
78
 
43
- 1. **HOT (Active)**: `NEXT-TASKS.md` β€” What we are doing _now_.
44
- 2. **WARM (Truth)**: `docs/core/` β€” The project's "Laws" (Architecture, Patterns, Domain Logic).
45
- 3. **COLD (History)**: `docs/archive/` β€” Historical changelogs (Ignore unless asked).
79
+ ### `cortex-tms validate`
80
+ Verify your project's TMS health and auto-fix common issues.
46
81
 
47
- **Why this works**: AI agents have limited context windows. Reading everything is wasteful. The tier system maximizes signal, minimizes noise.
82
+ ```bash
83
+ cortex-tms validate # Check project health
84
+ cortex-tms validate --fix # Auto-repair missing files
85
+ cortex-tms validate --strict # Strict mode with no warnings
86
+ ```
87
+
88
+ ### `cortex-tms status`
89
+ Project cockpit with health dashboard, sprint progress, and quick actions.
90
+
91
+ ```bash
92
+ cortex-tms status # Visual dashboard with progress bars
93
+ ```
94
+
95
+ ### `cortex-tms migrate`
96
+ Intelligent version managementβ€”detect outdated templates and automatically upgrade with safety backups.
97
+
98
+ ```bash
99
+ cortex-tms migrate # Analyze version status
100
+ cortex-tms migrate --apply # Auto-upgrade OUTDATED files (creates backup)
101
+ cortex-tms migrate --apply --force # Upgrade ALL files including customized
102
+ cortex-tms migrate --rollback # Restore from backup (interactive selection)
103
+ cortex-tms migrate --dry-run # Preview migration plan
104
+ ```
105
+
106
+ **Status Categories**:
107
+ - `LATEST`: Already on current version
108
+ - `OUTDATED`: Safe to auto-upgrade (matches old template)
109
+ - `CUSTOMIZED`: Manual review needed (has user changes)
110
+ - `MISSING`: Optional file not installed
111
+
112
+ **Safety Features**:
113
+ - Automatic backups in `.cortex/backups/` before any changes
114
+ - Timestamped snapshots with manifest files
115
+ - One-click rollback with interactive backup selection
116
+ - Confirmation prompts prevent accidental overwrites
117
+
118
+ ### `cortex-tms prompt`
119
+ Access project-aware AI prompts from the Essential 7 library.
120
+
121
+ ```bash
122
+ cortex-tms prompt # Interactive selection
123
+ cortex-tms prompt init-session # Direct access (auto-copies to clipboard!)
124
+ cortex-tms prompt --list # Browse all prompts
125
+ ```
126
+
127
+ **The Essential 7**:
128
+ - `init-session` - Start your AI session with context
129
+ - `feature` - Implement new features with architectural anchors
130
+ - `debug` - Troubleshoot with known issues lookup
131
+ - `review` - Code review against project patterns
132
+ - `refactor` - Structural improvements
133
+ - `decision` - Create Architecture Decision Records
134
+ - `finish` - Execute maintenance protocol
48
135
 
49
136
  ---
50
137
 
@@ -53,9 +140,10 @@ Traditional repos drown AI agents in thousands of lines of historical tasks and
53
140
  | Folder / File | Purpose | AI Context Tier |
54
141
  |:-------------|:--------|:---------------|
55
142
  | `NEXT-TASKS.md` | Active sprint and current focus | **HOT** (Always Read) |
56
- | `FUTURE-ENHANCEMENTS.md` | Living backlog (not current sprint) | **PLANNING** |
143
+ | `PROMPTS.md` | AI interaction templates (Essential 7) | **HOT** (Always Read) |
57
144
  | `CLAUDE.md` | CLI commands & workflow config | **HOT** (Always Read) |
58
145
  | `.github/copilot-instructions.md` | Global guardrails and critical rules | **HOT** (Always Read) |
146
+ | `FUTURE-ENHANCEMENTS.md` | Living backlog (not current sprint) | **PLANNING** |
59
147
  | `docs/core/ARCHITECTURE.md` | System design & tech stack | **WARM** (Read on Demand) |
60
148
  | `docs/core/PATTERNS.md` | Canonical code examples (Do/Don't) | **WARM** (Read on Demand) |
61
149
  | `docs/core/DOMAIN-LOGIC.md` | Immutable project rules | **WARM** (Read on Demand) |
@@ -65,98 +153,82 @@ Traditional repos drown AI agents in thousands of lines of historical tasks and
65
153
  | `docs/core/SCHEMA.md` | Data models (optional) | **WARM** (Read on Demand) |
66
154
  | `docs/core/TROUBLESHOOTING.md` | Framework gotchas (optional) | **WARM** (Read on Demand) |
67
155
  | `docs/archive/` | Historical changelogs | **COLD** (Ignore) |
68
- | `templates/` | Boilerplate files for user projects | N/A (Toolkit) |
69
156
 
70
157
  ---
71
158
 
72
- ## 🎯 What Cortex TMS Provides
159
+ ## πŸš€ What's New in v2.4.0
73
160
 
74
- ### For New Projects (Greenfield)
75
- - **GitHub Template Repository**: Click "Use this template" to start a new AI-optimized project
76
- - Pre-configured TMS structure
77
- - Ready-to-customize templates
161
+ ### Migration Auditor (Repository Scaling)
162
+ - **Version Tracking**: All templates include `@cortex-tms-version` metadata
163
+ - **Customization Detection**: Compares your files against original templates
164
+ - **Safe Upgrades**: Never lose custom changes during template evolution
165
+ - **Status Reports**: Clear categorization of file states (LATEST, OUTDATED, CUSTOMIZED)
78
166
 
79
- ### For Existing Projects (Brownfield)
80
- - **NPM CLI Tool**: `npx cortex-tms init` (Coming in Phase 4)
81
- - Detects existing structure
82
- - Merges TMS templates safely
167
+ ### Prompt Engine (Interaction Scaling)
168
+ - **Essential 7 Library**: Curated prompts for the entire development lifecycle
169
+ - **Clipboard Integration**: One command, instant activation
170
+ - **Project-Aware**: Prompts reference YOUR architecture, patterns, and domain logic
171
+ - **Customizable**: Edit `PROMPTS.md` to match team vocabulary
83
172
 
84
- ### For Developers
85
- - **Example Projects**: Reference implementations (Next.js, CLI tools, APIs)
86
- - **Best Practices Guide**: How to write effective patterns and domain logic
87
- - **Migration Guide**: How to adopt TMS incrementally
173
+ ### Enhanced Developer Experience
174
+ - **Status Dashboard**: Visual progress bars and health metrics
175
+ - **Self-Healing Validation**: `--fix` flag auto-repairs common issues
176
+ - **Dry-Run Mode**: Preview all changes before applying
177
+ - **VS Code Snippets**: 12 productivity snippets for rapid documentation
88
178
 
89
179
  ---
90
180
 
91
- ## πŸ€– How to Work with AI Agents in this Repo
92
-
93
- This repo is a **"Machine-Legible Project Constitution."** To get the best results from your AI pair programmer:
94
-
95
- 1. **The Context Trigger**: Start a session by saying:
96
- > _"Review NEXT-TASKS.md and docs/core. Suggest a plan for Task 1 using the Propose, Justify, Recommend framework."_
181
+ ## πŸ€– How to Work with AI Agents
97
182
 
98
- 2. **Pattern Enforcement**: When implementing a new component, say:
99
- > _"Follow the patterns in docs/core/PATTERNS.md."_
100
-
101
- 3. **Truth Anchoring**: If the AI hallucinates logic, point it to `DOMAIN-LOGIC.md`:
102
- > _"Your calculation is wrong. Refer to the rules in docs/core/DOMAIN-LOGIC.md."_
103
-
104
- 4. **Check Current Sprint**: Always ask:
105
- > _"What's in NEXT-TASKS.md? What should I work on?"_
106
-
107
- ---
108
-
109
- ## πŸ›  Setup (For Cortex TMS Development)
110
-
111
- **Prerequisites**:
112
- - Node.js (managed via FN - Fast Node Manager)
113
- - pnpm (package manager)
183
+ This repo is a **"Machine-Legible Project Constitution."** To get the best results:
114
184
 
185
+ ### 1. The Context Trigger
115
186
  ```bash
116
- # 1. Clone the repository
117
- git clone https://github.com/yourusername/cortex-tms.git
118
- cd cortex-tms
187
+ cortex-tms prompt init-session
188
+ # Copies: "Review NEXT-TASKS.md, docs/core/ARCHITECTURE.md, and CLAUDE.md.
189
+ # Summarize current priorities and propose a step-by-step plan..."
190
+ ```
119
191
 
120
- # 2. Install dependencies
121
- pnpm install
192
+ ### 2. Pattern Enforcement
193
+ ```bash
194
+ cortex-tms prompt review
195
+ # Copies: "Review the current changes against PATTERNS.md.
196
+ # Flag any violations and suggest specific fixes."
197
+ ```
122
198
 
123
- # 3. Review current tasks
124
- cat NEXT-TASKS.md
199
+ ### 3. Truth Anchoring
200
+ If the AI hallucinates logic:
201
+ > _"Your calculation is wrong. Refer to the rules in docs/core/DOMAIN-LOGIC.md."_
125
202
 
126
- # 4. Read the core documentation
127
- # - docs/core/ARCHITECTURE.md - System design
128
- # - docs/core/DOMAIN-LOGIC.md - TMS principles
129
- # - docs/core/PATTERNS.md - Template patterns
203
+ ### 4. Check Current Sprint
204
+ ```bash
205
+ cortex-tms status # Visual dashboard with current tasks
130
206
  ```
131
207
 
132
208
  ---
133
209
 
134
210
  ## πŸ“‹ Development Roadmap
135
211
 
136
- See `NEXT-TASKS.md` for current sprint and `FUTURE-ENHANCEMENTS.md` for backlog.
137
-
138
- **Completed Phases**:
139
- - [x] **Phase 1**: Dogfood the System - Apply TMS to Cortex itself
140
- - [x] **Phase 1.5**: Resolve Rule 4 Violation - Modularize Git standards
141
- - [x] **Phase 2**: Complete Template Library - All 15 templates built and validated
142
- - [x] **Phase 3**: Build Example App - Gold Standard Next.js 15 Todo App ✨
143
- - βœ… Full CRUD operations (create, read, update, delete, clear completed)
144
- - βœ… Polished UX with empty states, bulk actions, and accessibility features
145
- - βœ… Complete TMS documentation (ARCHITECTURE, PATTERNS, DOMAIN-LOGIC, SCHEMA)
146
- - βœ… 10 documented implementation patterns with canonical examples
147
- - βœ… Production build verified, TypeScript strict mode, lint passing
148
- - πŸ“ **Location**: [`examples/todo-app/`](./examples/todo-app/)
149
-
150
- **Current Phase**: Phase 4 - Create CLI Tool (πŸ”„ In Progress)
151
- - [ ] Design CLI architecture with Commander.js
152
- - [ ] Implement interactive prompts with Inquirer.js
153
- - [ ] Add template copy with placeholder replacement
154
- - [ ] Support greenfield and brownfield scenarios
155
- - [ ] Test `npx cortex-tms init` workflow
156
-
157
- **Future Phases**:
158
- - Phase 5: Write documentation guides (Quick Start, Migration, Best Practices)
159
- - Phase 6: Publish to npm + GitHub Template
212
+ **Completed Phases** (All βœ…):
213
+ - [x] **Phase 1**: Dogfood the System - Applied TMS to Cortex itself
214
+ - [x] **Phase 2**: Complete Template Library - All templates built and validated
215
+ - [x] **Phase 3**: Build Example App - Gold Standard Next.js 15 Todo App
216
+ - [x] **Phase 4**: Create CLI Tool - Full-featured CLI with 5 commands
217
+ - [x] **Phase 5**: Documentation & Guides - Status dashboard, snippets, validation
218
+ - [x] **Phase 6**: Publish & Scale - npm package + GitHub releases
219
+
220
+ **Current Version**: v2.4.0 "Scaling Intelligence"
221
+ - βœ… Migration Auditor with version tracking
222
+ - βœ… Prompt Engine with Essential 7 library
223
+ - βœ… Clipboard integration for frictionless workflows
224
+ - βœ… Project-local prompt customization
225
+
226
+ **Next Phase (v2.5)**: "Guidance & Growth"
227
+ - Auto-upgrade logic with `migrate --apply`
228
+ - Interactive CLI tutorial for onboarding
229
+ - Custom template directory support
230
+
231
+ See `NEXT-TASKS.md` for current sprint details and `CHANGELOG.md` for full version history.
160
232
 
161
233
  ---
162
234
 
@@ -165,41 +237,42 @@ See `NEXT-TASKS.md` for current sprint and `FUTURE-ENHANCEMENTS.md` for backlog.
165
237
  ```
166
238
  cortex-tms/
167
239
  β”œβ”€β”€ NEXT-TASKS.md # HOT: Current sprint
240
+ β”œβ”€β”€ PROMPTS.md # HOT: AI interaction templates
168
241
  β”œβ”€β”€ FUTURE-ENHANCEMENTS.md # PLANNING: Backlog
169
242
  β”œβ”€β”€ CLAUDE.md # HOT: Workflow config
170
243
  β”œβ”€β”€ README.md # This file
171
244
  β”œβ”€β”€ .github/
172
245
  β”‚ └── copilot-instructions.md # HOT: AI guardrails
246
+ β”œβ”€β”€ bin/ # CLI executable
247
+ β”œβ”€β”€ src/ # CLI source code
248
+ β”‚ β”œβ”€β”€ commands/ # CLI commands (init, validate, status, migrate, prompt)
249
+ β”‚ β”œβ”€β”€ utils/ # Template processing, validation, prompt parsing
250
+ β”‚ └── types/ # TypeScript definitions
173
251
  β”œβ”€β”€ templates/ # User-facing boilerplate
174
252
  β”‚ β”œβ”€β”€ NEXT-TASKS.md
253
+ β”‚ β”œβ”€β”€ PROMPTS.md # Essential 7 prompt library
175
254
  β”‚ β”œβ”€β”€ CLAUDE.md
176
255
  β”‚ β”œβ”€β”€ .github/
177
256
  β”‚ β”‚ └── copilot-instructions.md
257
+ β”‚ β”œβ”€β”€ vscode/
258
+ β”‚ β”‚ └── tms.code-snippets # VS Code productivity snippets
178
259
  β”‚ └── docs/
179
260
  β”‚ β”œβ”€β”€ core/
180
261
  β”‚ β”‚ β”œβ”€β”€ ARCHITECTURE.md
181
262
  β”‚ β”‚ β”œβ”€β”€ PATTERNS.md
182
263
  β”‚ β”‚ β”œβ”€β”€ DOMAIN-LOGIC.md
264
+ β”‚ β”‚ β”œβ”€β”€ GIT-STANDARDS.md
183
265
  β”‚ β”‚ β”œβ”€β”€ DECISIONS.md
184
266
  β”‚ β”‚ β”œβ”€β”€ GLOSSARY.md
185
267
  β”‚ β”‚ β”œβ”€β”€ SCHEMA.md
186
268
  β”‚ β”‚ └── TROUBLESHOOTING.md
187
269
  β”‚ └── archive/
188
270
  β”‚ └── v1.0-CHANGELOG.md
189
- β”œβ”€β”€ docs/ # Cortex TMS documentation
271
+ β”œβ”€β”€ docs/ # Cortex TMS project documentation
190
272
  β”‚ β”œβ”€β”€ core/
191
- β”‚ β”‚ β”œβ”€β”€ ARCHITECTURE.md
192
- β”‚ β”‚ β”œβ”€β”€ PATTERNS.md
193
- β”‚ β”‚ β”œβ”€β”€ DOMAIN-LOGIC.md
194
- β”‚ β”‚ β”œβ”€β”€ DECISIONS.md
195
- β”‚ β”‚ β”œβ”€β”€ GLOSSARY.md
196
- β”‚ β”‚ └── PHILOSOPHY.md
197
273
  β”‚ └── archive/
198
- β”‚ └── v1.0-CHANGELOG.md
199
- β”œβ”€β”€ examples/ # Reference implementations
200
- β”‚ └── todo-app/ # βœ… Gold Standard Next.js 15 Todo App
201
- β”œβ”€β”€ bin/ # CLI tool entry point
202
- └── src/ # CLI tool source code
274
+ └── examples/ # Reference implementations
275
+ └── todo-app/ # βœ… Gold Standard Next.js 15 App
203
276
  ```
204
277
 
205
278
  ---
@@ -210,15 +283,15 @@ cortex-tms/
210
283
 
211
284
  - Cortex's own `NEXT-TASKS.md` tracks Cortex development
212
285
  - Cortex's own `docs/core/PATTERNS.md` documents template patterns
213
- - If the structure doesn't work for Cortex, it won't work for users
286
+ - Cortex's own `PROMPTS.md` guides AI collaboration on Cortex
214
287
 
215
- **Validation Test**: "Can an AI agent working on Cortex find what it needs in < 3 file reads?"
288
+ **Validation Test**: "Can an AI agent working on Cortex find what it needs in < 3 file reads?" βœ…
216
289
 
217
290
  ---
218
291
 
219
292
  ## πŸ“š Key Documentation
220
293
 
221
- - **For AI Agents**: Read `.github/copilot-instructions.md` first
294
+ - **For AI Agents**: Read `.github/copilot-instructions.md` and `PROMPTS.md` first
222
295
  - **For Developers**: Read `docs/core/ARCHITECTURE.md` for system design
223
296
  - **For Contributors**: Read `docs/core/PATTERNS.md` for template patterns
224
297
  - **For Understanding**: Read `docs/core/DOMAIN-LOGIC.md` for TMS principles
@@ -229,18 +302,38 @@ cortex-tms/
229
302
 
230
303
  1. Read `NEXT-TASKS.md` to see what's being worked on
231
304
  2. Check `FUTURE-ENHANCEMENTS.md` for backlog items
232
- 3. Follow patterns in `docs/core/PATTERNS.md`
233
- 4. Verify changes against `docs/core/DOMAIN-LOGIC.md`
234
- 5. Test templates with AI agents before submitting
305
+ 3. Use `cortex-tms prompt` to get project-aware guidance
306
+ 4. Follow patterns in `docs/core/PATTERNS.md`
307
+ 5. Verify changes against `docs/core/DOMAIN-LOGIC.md`
308
+ 6. Test templates with AI agents before submitting
235
309
 
236
310
  ---
237
311
 
238
312
  ## πŸ“– Learn More
239
313
 
240
- - **Philosophy**: See `docs/core/PHILOSOPHY.md` (coming soon)
241
- - **Architecture**: See `docs/core/ARCHITECTURE.md`
314
+ - **Release Notes**: See `CHANGELOG.md` for version history
315
+ - **Architecture**: See `docs/core/ARCHITECTURE.md` for system design
242
316
  - **Decisions**: See `docs/core/DECISIONS.md` for ADRs
243
317
  - **Glossary**: See `docs/core/GLOSSARY.md` for terminology
318
+ - **Patterns**: See `docs/core/PATTERNS.md` for implementation examples
319
+
320
+ ---
321
+
322
+ ## 🎯 Why Cortex TMS?
323
+
324
+ **Before TMS**:
325
+ - AI agents waste time reading historical noise
326
+ - Documentation drifts from reality
327
+ - No standard way to constrain AI attention
328
+ - Manual prompt writing for every interaction
329
+
330
+ **After TMS**:
331
+ - Tiered structure (HOT/WARM/COLD) maximizes signal
332
+ - Version metadata keeps templates synchronized
333
+ - Essential 7 prompts provide instant AI activation
334
+ - Project-aware guidance scales across team size
335
+
336
+ **Result**: 3-5x faster AI collaboration with fewer hallucinations.
244
337
 
245
338
  ---
246
339
 
@@ -252,9 +345,9 @@ MIT
252
345
 
253
346
  ## Status
254
347
 
255
- **Version**: 2.1 (In Development)
256
- **Last Updated**: 2026-01-12
257
- **Current Sprint**: Phase 4 - CLI Tool πŸ”„ In Progress
258
- **Completed Sprints**: Phase 1, 1.5, 2, 3 (see `docs/archive/sprint-2026-01.md`)
348
+ **Version**: 2.5.0 (Stable / Production Ready)
349
+ **Last Updated**: 2026-01-14
350
+ **Current Sprint**: v2.5 Planning - "Guidance & Growth"
351
+ **Completed Sprints**: v2.1, v2.2, v2.3, v2.4 (see `docs/archive/`)
259
352
 
260
- <!-- @cortex-tms-version 2.3.0 -->
353
+ <!-- @cortex-tms-version 2.5.0 -->
package/dist/cli.js CHANGED
@@ -21,11 +21,13 @@ import { validateCommand } from './commands/validate.js';
21
21
  import { statusCommand } from './commands/status.js';
22
22
  import { migrateCommand } from './commands/migrate.js';
23
23
  import { promptCommand } from './commands/prompt.js';
24
+ import { tutorialCommand } from './commands/tutorial.js';
24
25
  program.addCommand(initCommand);
25
26
  program.addCommand(validateCommand);
26
27
  program.addCommand(statusCommand);
27
28
  program.addCommand(migrateCommand);
28
29
  program.addCommand(promptCommand);
30
+ program.addCommand(tutorialCommand);
29
31
  program.on('command:*', () => {
30
32
  console.error(chalk.red('\n❌ Invalid command:'), chalk.bold(program.args.join(' ')));
31
33
  console.log(chalk.gray('\nRun'), chalk.cyan('cortex-tms --help'), chalk.gray('to see available commands.'));
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAGtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAG9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IACzB,IAAI;IACJ,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CACzE;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC;KAC3E,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAGlC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EACjC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACnC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAGH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAG5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAGtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAG9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IACzB,IAAI;IACJ,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CACzE;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC;KAC3E,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAGpC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EACjC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACnC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAGH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAG5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;AAK/E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,oBAAoB,IAAI,OAAO,CAa9C;AAKD,eAAO,MAAM,cAAc,SAAyB,CAAC"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;AAK/E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,oBAAoB,IAAI,OAAO,CAe9C;AAKD,eAAO,MAAM,cAAc,SAAyB,CAAC"}
@@ -1,16 +1,20 @@
1
1
  import { Command } from 'commander';
2
2
  import chalk from 'chalk';
3
3
  import ora from 'ora';
4
+ import inquirer from 'inquirer';
4
5
  import { join } from 'path';
5
6
  import { existsSync } from 'fs';
6
7
  import { loadConfig, getScopePreset } from '../utils/config.js';
7
8
  import { getPackageVersion, extractVersion, getTemplatesDir } from '../utils/templates.js';
9
+ import { createBackup, listBackups, restoreBackup, formatBackupSize, getBackupSize } from '../utils/backup.js';
8
10
  import fs from 'fs-extra';
9
11
  export function createMigrateCommand() {
10
12
  const migrateCommand = new Command('migrate');
11
13
  migrateCommand
12
14
  .description('Upgrade TMS files to the current template version')
13
- .option('-f, --force', 'Force upgrade even for customized files')
15
+ .option('-a, --apply', 'Apply automatic upgrades (creates backup first)')
16
+ .option('-r, --rollback', 'Restore files from a previous backup')
17
+ .option('-f, --force', 'Force upgrade even for customized files (requires --apply)')
14
18
  .option('-v, --verbose', 'Show detailed output')
15
19
  .option('-d, --dry-run', 'Preview changes without applying them')
16
20
  .action(async (options) => {
@@ -21,7 +25,11 @@ export function createMigrateCommand() {
21
25
  export const migrateCommand = createMigrateCommand();
22
26
  async function runMigrate(options) {
23
27
  const cwd = process.cwd();
24
- const { force: _force = false, verbose: _verbose = false, dryRun = false } = options;
28
+ const { apply = false, rollback = false, force = false, verbose: _verbose = false, dryRun = false } = options;
29
+ if (rollback) {
30
+ await runRollback(cwd);
31
+ return;
32
+ }
25
33
  console.log(chalk.bold.cyan('\nπŸ”„ Cortex TMS Migration\n'));
26
34
  if (dryRun) {
27
35
  console.log(chalk.yellow('πŸ” DRY RUN MODE: No files will be modified.\n'));
@@ -72,12 +80,150 @@ async function runMigrate(options) {
72
80
  console.log(chalk.gray(` β„Ή ${missing.length} file(s) not installed (optional)`));
73
81
  }
74
82
  if (dryRun) {
75
- printNextSteps(outdated.length, customized.length);
83
+ printNextSteps(outdated.length, customized.length, apply);
76
84
  return;
77
85
  }
78
- printNextSteps(outdated.length, customized.length);
86
+ if (apply) {
87
+ await applyMigration(cwd, migrations, targetVersion, force);
88
+ }
89
+ else {
90
+ printNextSteps(outdated.length, customized.length, apply);
91
+ }
79
92
  }
80
- function printNextSteps(outdatedCount, customizedCount) {
93
+ async function applyMigration(projectRoot, migrations, targetVersion, force) {
94
+ const outdated = migrations.filter((m) => m.status === 'OUTDATED');
95
+ const customized = migrations.filter((m) => m.status === 'CUSTOMIZED');
96
+ const filesToUpgrade = force ? [...outdated, ...customized] : outdated;
97
+ if (filesToUpgrade.length === 0) {
98
+ console.log(chalk.yellow('\n⚠️ No files to upgrade.\n'));
99
+ return;
100
+ }
101
+ console.log(chalk.bold('\nπŸ”„ Files to be upgraded:\n'));
102
+ filesToUpgrade.forEach((file) => {
103
+ const icon = file.status === 'CUSTOMIZED' ? '⚠️ ' : 'βœ“';
104
+ console.log(chalk.blue(` ${icon} ${file.path}`));
105
+ });
106
+ if (!force && customized.length > 0) {
107
+ console.log(chalk.yellow(`\n⚠️ ${customized.length} CUSTOMIZED file(s) skipped. Use --force to upgrade them.\n`));
108
+ }
109
+ console.log(chalk.bold('\nπŸ’Ύ Creating backup...\n'));
110
+ const spinner = ora('Backing up files...').start();
111
+ const filePaths = filesToUpgrade.map((m) => join(projectRoot, m.path));
112
+ const backupResult = await createBackup(projectRoot, filePaths, `migrate to v${targetVersion}`, targetVersion);
113
+ if (!backupResult.success) {
114
+ spinner.fail('Backup failed');
115
+ console.log(chalk.red('\n❌ Error:'), backupResult.error);
116
+ console.log(chalk.gray('Migration aborted to prevent data loss.\n'));
117
+ process.exit(1);
118
+ }
119
+ spinner.succeed(`Backup created: ${chalk.cyan(backupResult.backupPath)}`);
120
+ console.log(chalk.gray(` ${backupResult.filesBackedUp} file(s) backed up safely\n`));
121
+ console.log(chalk.bold('πŸš€ Applying upgrades...\n'));
122
+ const upgradeSpinner = ora('Updating files...').start();
123
+ let upgradedCount = 0;
124
+ const templatesDir = getTemplatesDir();
125
+ for (const migration of filesToUpgrade) {
126
+ const filePath = join(projectRoot, migration.path);
127
+ const templatePath = join(templatesDir, migration.path);
128
+ if (!existsSync(templatePath)) {
129
+ continue;
130
+ }
131
+ try {
132
+ await fs.copyFile(templatePath, filePath);
133
+ upgradedCount++;
134
+ }
135
+ catch (error) {
136
+ upgradeSpinner.warn(`Failed to upgrade ${migration.path}`);
137
+ console.log(chalk.yellow(` ${error instanceof Error ? error.message : 'Unknown error'}`));
138
+ }
139
+ }
140
+ upgradeSpinner.succeed(`Upgraded ${upgradedCount} file(s) to v${targetVersion}`);
141
+ console.log(chalk.green.bold('\n✨ Migration complete!\n'));
142
+ console.log(chalk.gray('πŸ’‘ Tip: Review changes with:'));
143
+ console.log(chalk.cyan(' git diff\n'));
144
+ console.log(chalk.gray('πŸ’‘ To rollback, run:'));
145
+ console.log(chalk.cyan(' cortex-tms migrate --rollback\n'));
146
+ }
147
+ async function runRollback(projectRoot) {
148
+ console.log(chalk.bold.cyan('\nβͺ Cortex TMS Rollback\n'));
149
+ const spinner = ora('Searching for backups...').start();
150
+ const backups = await listBackups(projectRoot);
151
+ if (backups.length === 0) {
152
+ spinner.fail('No backups found');
153
+ console.log(chalk.yellow('\n⚠️ No backup snapshots available.'));
154
+ console.log(chalk.gray('Backups are created automatically when using:'));
155
+ console.log(chalk.cyan(' cortex-tms migrate --apply\n'));
156
+ return;
157
+ }
158
+ spinner.succeed(`Found ${backups.length} backup(s)`);
159
+ const choices = await Promise.all(backups.slice(0, 5).map(async (backup) => {
160
+ const backupPath = join(projectRoot, '.cortex', 'backups', backup.timestamp);
161
+ const size = await getBackupSize(backupPath);
162
+ const formattedSize = formatBackupSize(size);
163
+ const fileCount = backup.files.length;
164
+ return {
165
+ name: `${chalk.cyan(backup.timestamp)} - ${chalk.gray(`v${backup.version}`)} - ${chalk.blue(`${fileCount} file(s)`)} - ${chalk.gray(formattedSize)}`,
166
+ value: backup.timestamp,
167
+ short: backup.timestamp,
168
+ };
169
+ }));
170
+ choices.push({
171
+ name: chalk.gray('Cancel'),
172
+ value: 'cancel',
173
+ short: 'Cancel',
174
+ });
175
+ const { selectedBackup } = await inquirer.prompt([
176
+ {
177
+ type: 'list',
178
+ name: 'selectedBackup',
179
+ message: 'Select a backup to restore:',
180
+ choices,
181
+ pageSize: 10,
182
+ },
183
+ ]);
184
+ if (selectedBackup === 'cancel') {
185
+ console.log(chalk.gray('\nβœ“ Rollback cancelled.\n'));
186
+ return;
187
+ }
188
+ const selectedManifest = backups.find((b) => b.timestamp === selectedBackup);
189
+ if (!selectedManifest) {
190
+ console.log(chalk.red('\n❌ Error:'), 'Backup not found.\n');
191
+ return;
192
+ }
193
+ console.log(chalk.bold('\nπŸ“‹ Files to be restored:\n'));
194
+ selectedManifest.files.forEach((file) => {
195
+ console.log(chalk.blue(` βœ“ ${file.relativePath}`));
196
+ });
197
+ const { confirmed } = await inquirer.prompt([
198
+ {
199
+ type: 'confirm',
200
+ name: 'confirmed',
201
+ message: chalk.yellow('This will overwrite current files. Continue?'),
202
+ default: false,
203
+ },
204
+ ]);
205
+ if (!confirmed) {
206
+ console.log(chalk.gray('\nβœ“ Rollback cancelled.\n'));
207
+ return;
208
+ }
209
+ console.log(chalk.bold('\nβͺ Restoring backup...\n'));
210
+ const restoreSpinner = ora('Restoring files...').start();
211
+ try {
212
+ const backupPath = join(projectRoot, '.cortex', 'backups', selectedBackup);
213
+ const restoredCount = await restoreBackup(backupPath);
214
+ restoreSpinner.succeed(`Restored ${restoredCount} file(s) from backup`);
215
+ console.log(chalk.green.bold('\n✨ Rollback complete!\n'));
216
+ console.log(chalk.gray('πŸ’‘ Tip: Review restored files with:'));
217
+ console.log(chalk.cyan(' git diff\n'));
218
+ }
219
+ catch (error) {
220
+ restoreSpinner.fail('Rollback failed');
221
+ console.log(chalk.red('\n❌ Error:'), error instanceof Error ? error.message : 'Unknown error');
222
+ console.log(chalk.gray('Files may be partially restored.\n'));
223
+ process.exit(1);
224
+ }
225
+ }
226
+ function printNextSteps(outdatedCount, customizedCount, applyAvailable) {
81
227
  console.log(chalk.bold('\nπŸ“‹ Next Steps:\n'));
82
228
  if (outdatedCount > 0) {
83
229
  console.log(chalk.blue(' 1. Review OUTDATED files marked above'));
@@ -89,8 +235,20 @@ function printNextSteps(outdatedCount, customizedCount) {
89
235
  }
90
236
  console.log(chalk.gray(` ${outdatedCount > 0 || customizedCount > 0 ? (outdatedCount > 0 && customizedCount > 0 ? '3' : '2') : '1'}. Check the latest templates at:`));
91
237
  console.log(chalk.cyan(' https://github.com/cortex-tms/cortex-tms/tree/main/templates'));
92
- console.log(chalk.bold.cyan('\nπŸš€ Coming in v2.5:'), chalk.gray('Automatic upgrades with backup/rollback'));
93
- console.log(chalk.gray(' For now, please manually review and update files as needed.\n'));
238
+ if (applyAvailable && (outdatedCount > 0 || customizedCount > 0)) {
239
+ console.log(chalk.bold.cyan('\nπŸš€ Automatic Upgrade Available:\n'));
240
+ if (outdatedCount > 0) {
241
+ console.log(chalk.blue(' cortex-tms migrate --apply'));
242
+ console.log(chalk.gray(' β†’ Safely upgrade OUTDATED files (creates backup)\n'));
243
+ }
244
+ if (customizedCount > 0) {
245
+ console.log(chalk.yellow(' cortex-tms migrate --apply --force'));
246
+ console.log(chalk.gray(' β†’ Upgrade ALL files including customized (use with caution)\n'));
247
+ }
248
+ }
249
+ else {
250
+ console.log(chalk.gray(' Or manually review and update files as needed.\n'));
251
+ }
94
252
  }
95
253
  async function analyzeFile(filePath, targetVersion) {
96
254
  const fileName = filePath.split('/').pop() || filePath;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTutorialCommand(): Command;
3
+ export declare const tutorialCommand: Command;
4
+ //# sourceMappingURL=tutorial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tutorial.d.ts","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,qBAAqB,IAAI,OAAO,CAU/C;AAKD,eAAO,MAAM,eAAe,SAA0B,CAAC"}
@@ -0,0 +1,203 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ export function createTutorialCommand() {
5
+ const tutorialCommand = new Command('tutorial');
6
+ tutorialCommand
7
+ .description('Interactive walkthrough of Cortex TMS features')
8
+ .action(async () => {
9
+ await runTutorial();
10
+ });
11
+ return tutorialCommand;
12
+ }
13
+ export const tutorialCommand = createTutorialCommand();
14
+ async function runTutorial() {
15
+ console.log(chalk.bold.cyan('\nπŸŽ“ Welcome to Cortex TMS Tutorial\n'));
16
+ console.log(chalk.gray('This interactive guide will teach you the "Cortex Way"'));
17
+ console.log(chalk.gray('Press Enter to continue through lessons, or select Exit to quit.\n'));
18
+ const lessons = [
19
+ {
20
+ title: 'πŸ“Š Lesson 1: The Project Dashboard',
21
+ content: [
22
+ 'Every Cortex TMS project has a visual dashboard showing:',
23
+ ' β€’ Current scope (Nano/Standard/Enterprise)',
24
+ ' β€’ Active tasks from NEXT-TASKS.md',
25
+ ' β€’ Validation health status',
26
+ ' β€’ Quick statistics at a glance',
27
+ '',
28
+ 'Think of this as your "Project Cockpit" - everything you need to know in one command.',
29
+ ],
30
+ command: 'cortex-tms status',
31
+ tip: 'Run this command whenever you return to a project to get oriented.',
32
+ },
33
+ {
34
+ title: 'πŸ€– Lesson 2: AI Agent Activation',
35
+ content: [
36
+ 'Cortex TMS includes the "Essential 7" prompt library:',
37
+ ' β€’ init-session - Start with context',
38
+ ' β€’ feature - Implement with architectural anchors',
39
+ ' β€’ debug - Troubleshoot systematically',
40
+ ' β€’ review - Code review against patterns',
41
+ ' β€’ refactor - Structural improvements',
42
+ ' β€’ decision - Architecture decision records',
43
+ ' β€’ finish - Execute maintenance protocol',
44
+ '',
45
+ 'Each prompt is project-aware, referencing YOUR docs.',
46
+ 'Prompts auto-copy to clipboard for instant paste!',
47
+ ],
48
+ command: 'cortex-tms prompt init-session',
49
+ tip: 'Customize prompts by editing PROMPTS.md in your project root.',
50
+ },
51
+ {
52
+ title: 'πŸ”„ Lesson 3: Zero-Drift Governance',
53
+ content: [
54
+ 'Version drift is the #1 cause of documentation errors.',
55
+ 'Cortex TMS eliminates this with automated version sync.',
56
+ '',
57
+ 'How it works:',
58
+ ' 1. Update package.json version (the Single Source of Truth)',
59
+ ' 2. Run the sync script',
60
+ ' 3. All docs automatically updated',
61
+ '',
62
+ 'CI validates sync on every PR - drift cannot merge!',
63
+ ],
64
+ command: 'pnpm run docs:sync',
65
+ tip: 'If CI blocks your PR, run docs:sync locally and commit the changes.',
66
+ },
67
+ {
68
+ title: 'βœ… Lesson 4: Project Health & The Archive Protocol',
69
+ content: [
70
+ 'The validate command checks project health:',
71
+ ' β€’ Mandatory files exist',
72
+ ' β€’ No placeholder text (e.g., [YOUR_PROJECT])',
73
+ ' β€’ Configuration is valid',
74
+ ' β€’ Archive status is healthy',
75
+ '',
76
+ 'The Archive Protocol (you just experienced this!):',
77
+ ' β€’ CI blocks PRs if >10 completed tasks in NEXT-TASKS.md',
78
+ ' β€’ This forces regular archival to docs/archive/',
79
+ ' β€’ Keeps NEXT-TASKS.md focused on current work',
80
+ ' β€’ Prevents technical debt accumulation',
81
+ '',
82
+ 'This is governance that enforces itself!',
83
+ ],
84
+ command: 'cortex-tms validate --strict',
85
+ tip: 'Run validate before commits to catch issues early.',
86
+ },
87
+ {
88
+ title: 'πŸš€ Lesson 5: Safe Template Evolution',
89
+ content: [
90
+ 'Templates evolve, but your customizations matter.',
91
+ 'The Safe-Fail Migration Engine has 3 components:',
92
+ '',
93
+ '1. Backup Engine (automatic snapshots)',
94
+ ' β€’ Timestamped backups in .cortex/backups/',
95
+ ' β€’ Created BEFORE any changes',
96
+ ' β€’ Manifest tracks what/why',
97
+ '',
98
+ '2. Apply Logic (smart upgrades)',
99
+ ' β€’ Auto-upgrades OUTDATED files',
100
+ ' β€’ Skips CUSTOMIZED files (unless --force)',
101
+ ' β€’ Clear status reporting',
102
+ '',
103
+ '3. Rollback Command (one-click recovery)',
104
+ ' β€’ Interactive backup selection',
105
+ ' β€’ Preview before restore',
106
+ ' β€’ Confirmation required',
107
+ '',
108
+ 'Upgrade fearlessly - recovery is one command away!',
109
+ ],
110
+ command: 'cortex-tms migrate',
111
+ tip: 'Always run migrate (no flags) first to see what needs updating.',
112
+ },
113
+ ];
114
+ let currentLesson = 0;
115
+ while (currentLesson < lessons.length) {
116
+ const lesson = lessons[currentLesson];
117
+ if (!lesson) {
118
+ break;
119
+ }
120
+ console.clear();
121
+ console.log(chalk.bold.cyan(`\n${lesson.title}\n`));
122
+ console.log(chalk.gray(`Lesson ${currentLesson + 1} of ${lessons.length}\n`));
123
+ lesson.content.forEach((line) => {
124
+ if (line === '') {
125
+ console.log();
126
+ }
127
+ else if (line.startsWith(' β€’')) {
128
+ console.log(chalk.blue(line));
129
+ }
130
+ else if (line.startsWith(' ')) {
131
+ console.log(chalk.gray(line));
132
+ }
133
+ else {
134
+ console.log(chalk.white(line));
135
+ }
136
+ });
137
+ if (lesson.command) {
138
+ console.log(chalk.bold.yellow('\nπŸ’» Try this command:\n'));
139
+ console.log(chalk.cyan(` ${lesson.command}\n`));
140
+ }
141
+ if (lesson.tip) {
142
+ console.log(chalk.gray(`πŸ’‘ Pro Tip: ${lesson.tip}\n`));
143
+ }
144
+ const isLast = currentLesson === lessons.length - 1;
145
+ const choices = isLast
146
+ ? [
147
+ { name: chalk.green('βœ“ Finish Tutorial'), value: 'next' },
148
+ { name: chalk.gray('← Previous Lesson'), value: 'prev' },
149
+ { name: chalk.red('Exit Tutorial'), value: 'exit' },
150
+ ]
151
+ : [
152
+ { name: chalk.green('β†’ Next Lesson'), value: 'next' },
153
+ ...(currentLesson > 0
154
+ ? [{ name: chalk.gray('← Previous Lesson'), value: 'prev' }]
155
+ : []),
156
+ { name: chalk.red('Exit Tutorial'), value: 'exit' },
157
+ ];
158
+ const { action } = await inquirer.prompt([
159
+ {
160
+ type: 'list',
161
+ name: 'action',
162
+ message: 'What would you like to do?',
163
+ choices,
164
+ },
165
+ ]);
166
+ if (action === 'exit') {
167
+ console.log(chalk.gray('\nβœ“ Tutorial exited. Run "cortex-tms tutorial" anytime to continue.\n'));
168
+ return;
169
+ }
170
+ else if (action === 'prev') {
171
+ currentLesson = Math.max(0, currentLesson - 1);
172
+ }
173
+ else if (action === 'next') {
174
+ if (isLast) {
175
+ break;
176
+ }
177
+ else {
178
+ currentLesson++;
179
+ }
180
+ }
181
+ }
182
+ console.clear();
183
+ console.log(chalk.bold.green('\nπŸŽ‰ Tutorial Complete!\n'));
184
+ console.log(chalk.white('You now know the Cortex Way:'));
185
+ console.log(chalk.blue(' β€’ Dashboard: cortex-tms status'));
186
+ console.log(chalk.blue(' β€’ AI Activation: cortex-tms prompt'));
187
+ console.log(chalk.blue(' β€’ Version Sync: pnpm run docs:sync'));
188
+ console.log(chalk.blue(' β€’ Health Check: cortex-tms validate'));
189
+ console.log(chalk.blue(' β€’ Migration: cortex-tms migrate'));
190
+ console.log();
191
+ console.log(chalk.gray('πŸ’‘ Next Steps:'));
192
+ console.log(chalk.cyan(' 1. Run "cortex-tms status" to see your project dashboard'));
193
+ console.log(chalk.cyan(' 2. Run "cortex-tms prompt init-session" to start coding'));
194
+ console.log(chalk.cyan(' 3. Read NEXT-TASKS.md to see what to work on next'));
195
+ console.log();
196
+ console.log(chalk.gray('πŸ“š For more details, see:'));
197
+ console.log(chalk.gray(' β€’ CLAUDE.md (agent workflow)'));
198
+ console.log(chalk.gray(' β€’ docs/core/ARCHITECTURE.md (technical design)'));
199
+ console.log(chalk.gray(' β€’ docs/core/PATTERNS.md (coding standards)'));
200
+ console.log();
201
+ console.log(chalk.bold.cyan('Happy coding! πŸš€\n'));
202
+ }
203
+ //# sourceMappingURL=tutorial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tutorial.js","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface BackupFileInfo {
2
+ relativePath: string;
3
+ originalPath: string;
4
+ size: number;
5
+ reason: string;
6
+ }
7
+ export interface BackupManifest {
8
+ timestamp: string;
9
+ version: string;
10
+ reason: string;
11
+ files: BackupFileInfo[];
12
+ projectRoot: string;
13
+ }
14
+ export interface BackupResult {
15
+ success: boolean;
16
+ backupPath: string;
17
+ filesBackedUp: number;
18
+ error?: string;
19
+ }
20
+ export declare function createBackup(projectRoot: string, filesToBackup: string[], reason: string, version: string): Promise<BackupResult>;
21
+ export declare function restoreBackup(backupPath: string): Promise<number>;
22
+ export declare function listBackups(projectRoot: string): Promise<BackupManifest[]>;
23
+ export declare function pruneBackups(projectRoot: string, keepCount?: number): Promise<number>;
24
+ export declare function getBackupSize(backupPath: string): Promise<number>;
25
+ export declare function formatBackupSize(bytes: number): string;
26
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/utils/backup.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CAwEvB;AAQD,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCvE;AAQD,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA0BhF;AASD,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAyBD,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUvE;AAQD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWtD"}
@@ -0,0 +1,143 @@
1
+ import { join, dirname, relative } from 'path';
2
+ import { existsSync, mkdirSync } from 'fs';
3
+ import fs from 'fs-extra';
4
+ export async function createBackup(projectRoot, filesToBackup, reason, version) {
5
+ try {
6
+ const timestamp = generateTimestamp();
7
+ const backupDir = join(projectRoot, '.cortex', 'backups', timestamp);
8
+ if (!existsSync(backupDir)) {
9
+ mkdirSync(backupDir, { recursive: true });
10
+ }
11
+ const backedUpFiles = [];
12
+ for (const filePath of filesToBackup) {
13
+ if (!existsSync(filePath)) {
14
+ continue;
15
+ }
16
+ const relativePath = relative(projectRoot, filePath);
17
+ const destPath = join(backupDir, relativePath);
18
+ const destDir = dirname(destPath);
19
+ if (!existsSync(destDir)) {
20
+ mkdirSync(destDir, { recursive: true });
21
+ }
22
+ await fs.copyFile(filePath, destPath);
23
+ const stats = await fs.stat(filePath);
24
+ backedUpFiles.push({
25
+ relativePath,
26
+ originalPath: filePath,
27
+ size: stats.size,
28
+ reason: `Backup before ${reason}`,
29
+ });
30
+ }
31
+ const manifest = {
32
+ timestamp,
33
+ version,
34
+ reason,
35
+ files: backedUpFiles,
36
+ projectRoot,
37
+ };
38
+ const manifestPath = join(backupDir, 'manifest.json');
39
+ await fs.writeJson(manifestPath, manifest, { spaces: 2 });
40
+ return {
41
+ success: true,
42
+ backupPath: backupDir,
43
+ filesBackedUp: backedUpFiles.length,
44
+ };
45
+ }
46
+ catch (error) {
47
+ return {
48
+ success: false,
49
+ backupPath: '',
50
+ filesBackedUp: 0,
51
+ error: error instanceof Error ? error.message : 'Unknown error',
52
+ };
53
+ }
54
+ }
55
+ export async function restoreBackup(backupPath) {
56
+ const manifestPath = join(backupPath, 'manifest.json');
57
+ if (!existsSync(manifestPath)) {
58
+ throw new Error('Backup manifest not found');
59
+ }
60
+ const manifest = await fs.readJson(manifestPath);
61
+ let restoredCount = 0;
62
+ for (const fileInfo of manifest.files) {
63
+ const sourcePath = join(backupPath, fileInfo.relativePath);
64
+ const destPath = fileInfo.originalPath;
65
+ if (!existsSync(sourcePath)) {
66
+ continue;
67
+ }
68
+ const destDir = dirname(destPath);
69
+ if (!existsSync(destDir)) {
70
+ mkdirSync(destDir, { recursive: true });
71
+ }
72
+ await fs.copyFile(sourcePath, destPath);
73
+ restoredCount++;
74
+ }
75
+ return restoredCount;
76
+ }
77
+ export async function listBackups(projectRoot) {
78
+ const backupsDir = join(projectRoot, '.cortex', 'backups');
79
+ if (!existsSync(backupsDir)) {
80
+ return [];
81
+ }
82
+ const backupDirs = await fs.readdir(backupsDir);
83
+ const manifests = [];
84
+ for (const dir of backupDirs) {
85
+ const manifestPath = join(backupsDir, dir, 'manifest.json');
86
+ if (existsSync(manifestPath)) {
87
+ try {
88
+ const manifest = await fs.readJson(manifestPath);
89
+ manifests.push(manifest);
90
+ }
91
+ catch (error) {
92
+ continue;
93
+ }
94
+ }
95
+ }
96
+ return manifests.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
97
+ }
98
+ export async function pruneBackups(projectRoot, keepCount = 10) {
99
+ const backups = await listBackups(projectRoot);
100
+ if (backups.length <= keepCount) {
101
+ return 0;
102
+ }
103
+ const backupsDir = join(projectRoot, '.cortex', 'backups');
104
+ const toDelete = backups.slice(keepCount);
105
+ let deletedCount = 0;
106
+ for (const backup of toDelete) {
107
+ const backupDir = join(backupsDir, backup.timestamp);
108
+ if (existsSync(backupDir)) {
109
+ await fs.remove(backupDir);
110
+ deletedCount++;
111
+ }
112
+ }
113
+ return deletedCount;
114
+ }
115
+ function generateTimestamp() {
116
+ const now = new Date();
117
+ const year = now.getFullYear();
118
+ const month = String(now.getMonth() + 1).padStart(2, '0');
119
+ const day = String(now.getDate()).padStart(2, '0');
120
+ const hours = String(now.getHours()).padStart(2, '0');
121
+ const minutes = String(now.getMinutes()).padStart(2, '0');
122
+ const seconds = String(now.getSeconds()).padStart(2, '0');
123
+ return `${year}-${month}-${day}_${hours}${minutes}${seconds}`;
124
+ }
125
+ export async function getBackupSize(backupPath) {
126
+ const manifestPath = join(backupPath, 'manifest.json');
127
+ if (!existsSync(manifestPath)) {
128
+ return 0;
129
+ }
130
+ const manifest = await fs.readJson(manifestPath);
131
+ return manifest.files.reduce((total, file) => total + file.size, 0);
132
+ }
133
+ export function formatBackupSize(bytes) {
134
+ const units = ['B', 'KB', 'MB', 'GB'];
135
+ let size = bytes;
136
+ let unitIndex = 0;
137
+ while (size >= 1024 && unitIndex < units.length - 1) {
138
+ size /= 1024;
139
+ unitIndex++;
140
+ }
141
+ return `${size.toFixed(1)} ${units[unitIndex]}`;
142
+ }
143
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/utils/backup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cortex-tms",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "The Universal AI-Optimized Project Boilerplate - CLI tool for bootstrapping TMS-structured projects",
5
5
  "type": "module",
6
6
  "bin": {
@@ -22,6 +22,8 @@
22
22
  "cli:dev": "tsx src/cli.ts",
23
23
  "cli:build": "tsc -p tsconfig.cli.json",
24
24
  "cli:test": "node bin/cortex-tms.js --help",
25
+ "docs:sync": "node scripts/sync-project.js",
26
+ "docs:check": "node scripts/sync-project.js --check",
25
27
  "test": "vitest run",
26
28
  "test:watch": "vitest",
27
29
  "test:coverage": "vitest run --coverage",
@@ -42,7 +42,13 @@ We need to decide on `[TOPIC]`. Draft a new Architecture Decision Record in `doc
42
42
 
43
43
  ## finish
44
44
 
45
- Task complete. Execute the Maintenance Protocol: update `NEXT-TASKS.md`, sync truth to `docs/core/`, and suggest the next priority.
45
+ Task complete. Execute the Maintenance Protocol:
46
+
47
+ 1. Run `pnpm run docs:sync` to ensure version integrity across documentation
48
+ 2. Update `NEXT-TASKS.md` with task status and next priorities
49
+ 3. Run `node bin/cortex-tms.js validate --strict` to verify project health
50
+ 4. Follow Git Protocol: commit with conventional format and co-authorship
51
+ 5. Suggest next priority from backlog
46
52
 
47
53
  ---
48
54
 
@@ -52,4 +58,4 @@ Task complete. Execute the Maintenance Protocol: update `NEXT-TASKS.md`, sync tr
52
58
  - Customize these prompts to match your team's vocabulary and workflow
53
59
  - Run `cortex-tms prompt --list` to see all available prompts
54
60
 
55
- <!-- @cortex-tms-version 2.3.0 -->
61
+ <!-- @cortex-tms-version 2.4.1 -->