@thiagodiogo/pastelsdd 1.0.0-beta.1 → 1.0.0-beta.3

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 (111) hide show
  1. package/README.md +142 -3
  2. package/bin/pastelsdd.js +1 -1
  3. package/dist/core/command-generation/adapters/claude.d.ts +1 -1
  4. package/dist/core/command-generation/adapters/claude.js +2 -2
  5. package/dist/core/command-generation/adapters/codex.d.ts +1 -1
  6. package/dist/core/command-generation/adapters/codex.js +2 -2
  7. package/dist/core/command-generation/adapters/cursor.d.ts +2 -2
  8. package/dist/core/command-generation/adapters/cursor.js +5 -5
  9. package/dist/core/command-generation/adapters/gemini.d.ts +1 -1
  10. package/dist/core/command-generation/adapters/gemini.js +2 -2
  11. package/dist/core/command-generation/adapters/github-copilot.d.ts +1 -1
  12. package/dist/core/command-generation/adapters/github-copilot.js +2 -2
  13. package/dist/core/command-generation/adapters/index.d.ts +0 -21
  14. package/dist/core/command-generation/adapters/index.js +0 -21
  15. package/dist/core/command-generation/index.d.ts +1 -1
  16. package/dist/core/command-generation/index.js +1 -1
  17. package/dist/core/command-generation/registry.d.ts +0 -1
  18. package/dist/core/command-generation/registry.js +0 -43
  19. package/dist/core/command-generation/types.d.ts +1 -1
  20. package/dist/core/config.js +0 -25
  21. package/dist/core/init.d.ts +4 -1
  22. package/dist/core/init.js +98 -15
  23. package/dist/core/legacy-cleanup.d.ts +1 -1
  24. package/dist/core/legacy-cleanup.js +1 -26
  25. package/dist/core/migration.js +1 -1
  26. package/dist/core/openspec-migration.d.ts +71 -0
  27. package/dist/core/openspec-migration.js +320 -0
  28. package/dist/core/profile-sync-drift.js +3 -0
  29. package/dist/core/profiles.d.ts +1 -1
  30. package/dist/core/profiles.js +3 -0
  31. package/dist/core/shared/skill-generation.d.ts +2 -2
  32. package/dist/core/shared/skill-generation.js +31 -25
  33. package/dist/core/templates/skill-templates.d.ts +13 -11
  34. package/dist/core/templates/skill-templates.js +14 -11
  35. package/dist/core/templates/workflows/apply-change.d.ts +1 -1
  36. package/dist/core/templates/workflows/apply-change.js +138 -165
  37. package/dist/core/templates/workflows/archive-change.d.ts +1 -1
  38. package/dist/core/templates/workflows/archive-change.js +86 -136
  39. package/dist/core/templates/workflows/bulk-archive-change.d.ts +1 -1
  40. package/dist/core/templates/workflows/bulk-archive-change.js +2 -2
  41. package/dist/core/templates/workflows/continue-change.d.ts +1 -1
  42. package/dist/core/templates/workflows/continue-change.js +5 -5
  43. package/dist/core/templates/workflows/explore.d.ts +1 -1
  44. package/dist/core/templates/workflows/explore.js +302 -6
  45. package/dist/core/templates/workflows/ff-change.d.ts +1 -1
  46. package/dist/core/templates/workflows/ff-change.js +5 -5
  47. package/dist/core/templates/workflows/new-change.d.ts +1 -1
  48. package/dist/core/templates/workflows/new-change.js +5 -5
  49. package/dist/core/templates/workflows/onboard.d.ts +1 -1
  50. package/dist/core/templates/workflows/onboard.js +73 -29
  51. package/dist/core/templates/workflows/propose.d.ts +2 -2
  52. package/dist/core/templates/workflows/propose.js +237 -108
  53. package/dist/core/templates/workflows/sync-specs.d.ts +1 -1
  54. package/dist/core/templates/workflows/sync-specs.js +3 -3
  55. package/dist/core/templates/workflows/trello-draft.d.ts +12 -0
  56. package/dist/core/templates/workflows/trello-draft.js +193 -0
  57. package/dist/core/templates/workflows/trello-setup.d.ts +12 -0
  58. package/dist/core/templates/workflows/trello-setup.js +315 -0
  59. package/dist/core/templates/workflows/verify-change.d.ts +1 -1
  60. package/dist/core/templates/workflows/verify-change.js +3 -3
  61. package/dist/core/trello-config.d.ts +90 -0
  62. package/dist/core/trello-config.js +86 -0
  63. package/dist/core/trello-init-prompt.d.ts +61 -0
  64. package/dist/core/trello-init-prompt.js +180 -0
  65. package/dist/core/update.js +3 -3
  66. package/dist/ui/welcome-screen.js +4 -4
  67. package/dist/utils/command-references.d.ts +3 -3
  68. package/dist/utils/command-references.js +4 -4
  69. package/package.json +5 -4
  70. package/dist/core/command-generation/adapters/amazon-q.d.ts +0 -13
  71. package/dist/core/command-generation/adapters/amazon-q.js +0 -26
  72. package/dist/core/command-generation/adapters/antigravity.d.ts +0 -13
  73. package/dist/core/command-generation/adapters/antigravity.js +0 -26
  74. package/dist/core/command-generation/adapters/auggie.d.ts +0 -13
  75. package/dist/core/command-generation/adapters/auggie.js +0 -27
  76. package/dist/core/command-generation/adapters/bob.d.ts +0 -14
  77. package/dist/core/command-generation/adapters/bob.js +0 -45
  78. package/dist/core/command-generation/adapters/cline.d.ts +0 -14
  79. package/dist/core/command-generation/adapters/cline.js +0 -27
  80. package/dist/core/command-generation/adapters/codebuddy.d.ts +0 -13
  81. package/dist/core/command-generation/adapters/codebuddy.js +0 -28
  82. package/dist/core/command-generation/adapters/continue.d.ts +0 -13
  83. package/dist/core/command-generation/adapters/continue.js +0 -28
  84. package/dist/core/command-generation/adapters/costrict.d.ts +0 -13
  85. package/dist/core/command-generation/adapters/costrict.js +0 -27
  86. package/dist/core/command-generation/adapters/crush.d.ts +0 -13
  87. package/dist/core/command-generation/adapters/crush.js +0 -30
  88. package/dist/core/command-generation/adapters/factory.d.ts +0 -13
  89. package/dist/core/command-generation/adapters/factory.js +0 -27
  90. package/dist/core/command-generation/adapters/iflow.d.ts +0 -13
  91. package/dist/core/command-generation/adapters/iflow.js +0 -29
  92. package/dist/core/command-generation/adapters/junie.d.ts +0 -13
  93. package/dist/core/command-generation/adapters/junie.js +0 -26
  94. package/dist/core/command-generation/adapters/kilocode.d.ts +0 -14
  95. package/dist/core/command-generation/adapters/kilocode.js +0 -23
  96. package/dist/core/command-generation/adapters/kiro.d.ts +0 -13
  97. package/dist/core/command-generation/adapters/kiro.js +0 -26
  98. package/dist/core/command-generation/adapters/lingma.d.ts +0 -13
  99. package/dist/core/command-generation/adapters/lingma.js +0 -30
  100. package/dist/core/command-generation/adapters/opencode.d.ts +0 -13
  101. package/dist/core/command-generation/adapters/opencode.js +0 -29
  102. package/dist/core/command-generation/adapters/pi.d.ts +0 -18
  103. package/dist/core/command-generation/adapters/pi.js +0 -55
  104. package/dist/core/command-generation/adapters/qoder.d.ts +0 -13
  105. package/dist/core/command-generation/adapters/qoder.js +0 -30
  106. package/dist/core/command-generation/adapters/qwen.d.ts +0 -13
  107. package/dist/core/command-generation/adapters/qwen.js +0 -26
  108. package/dist/core/command-generation/adapters/roocode.d.ts +0 -14
  109. package/dist/core/command-generation/adapters/roocode.js +0 -27
  110. package/dist/core/command-generation/adapters/windsurf.d.ts +0 -14
  111. package/dist/core/command-generation/adapters/windsurf.js +0 -51
package/README.md CHANGED
@@ -1,3 +1,142 @@
1
- # pastelsdd
2
-
3
- > Work in progress.
1
+ # pastelsdd
2
+
3
+ > Spec-driven, AI-native development workflow CLI
4
+
5
+ [![npm](https://img.shields.io/npm/v/@thiagodiogo/pastelsdd)](https://www.npmjs.com/package/@thiagodiogo/pastelsdd)
6
+ [![license](https://img.shields.io/npm/l/@thiagodiogo/pastelsdd)](LICENSE)
7
+ [![node](https://img.shields.io/node/v/@thiagodiogo/pastelsdd)](https://nodejs.org)
8
+
9
+ Pastelsdd installs a planning pipeline inside your repo. Every feature goes through **proposal → specs → design → tasks → apply**, tracked as versioned files and exposed as slash commands to your AI agent.
10
+
11
+ ---
12
+
13
+ ## Requirements
14
+
15
+ - Node.js `>= 20.19.0`
16
+ - At least one supported AI tool: **Claude Code**, **Cursor**, **Gemini CLI**, **GitHub Copilot**, or **Codex CLI**
17
+
18
+ ---
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ npm install -g @thiagodiogo/pastelsdd
24
+ # or
25
+ pnpm add -g @thiagodiogo/pastelsdd
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Quick Start
31
+
32
+ ```bash
33
+ cd your-project
34
+ pastelsdd init
35
+ ```
36
+
37
+ The init wizard auto-detects which AI tools you have (`.claude/`, `.cursor/`, etc.), installs skill files and slash commands, and creates the planning folder:
38
+
39
+ ```
40
+ pastelsdd/
41
+ ├── changes/ ← one subfolder per active change
42
+ │ └── archive/ ← completed changes
43
+ ├── specs/ ← project capability specs
44
+ └── config.yaml ← local schema config
45
+ ```
46
+
47
+ Once initialized, use slash commands in your AI agent:
48
+
49
+ ```
50
+ /pstl:propose "add dark mode" ← creates a new change
51
+ /pstl:continue ← advances to the next artifact
52
+ /pstl:apply ← applies pending tasks
53
+ /pstl:archive ← archives a completed change
54
+ ```
55
+
56
+ ---
57
+
58
+ ## How It Works
59
+
60
+ Each change lives in `pastelsdd/changes/<name>/` and follows a DAG of artifacts defined by a workflow schema:
61
+
62
+ ```
63
+ pastelsdd/changes/dark-mode/
64
+ ├── proposal.md ← why this change
65
+ ├── specs/ ← what the system must do
66
+ ├── design.md ← how to implement it
67
+ └── tasks.md ← implementation checklist
68
+ ```
69
+
70
+ The AI agent reads these files at each step and generates the next artifact using enriched instructions from the schema.
71
+
72
+ ---
73
+
74
+ ## CLI Reference
75
+
76
+ | Command | Description |
77
+ |---------|-------------|
78
+ | `pastelsdd init [path]` | Initialize Pastelsdd in a project |
79
+ | `pastelsdd update [path]` | Regenerate skill/command files after an upgrade |
80
+ | `pastelsdd list` | List active changes |
81
+ | `pastelsdd list --specs` | List project specs |
82
+ | `pastelsdd status` | Show artifact completion for the current change |
83
+ | `pastelsdd instructions [artifact]` | Print enriched instructions for an artifact |
84
+ | `pastelsdd validate [name]` | Validate a change or spec |
85
+ | `pastelsdd validate --all` | Validate everything |
86
+ | `pastelsdd show [name]` | Display a change or spec |
87
+ | `pastelsdd archive [name]` | Archive a completed change |
88
+ | `pastelsdd new change <name>` | Create a new change directory |
89
+ | `pastelsdd schemas` | List available workflow schemas |
90
+ | `pastelsdd view` | Interactive dashboard |
91
+ | `pastelsdd feedback <message>` | Submit feedback |
92
+ | `pastelsdd completion install` | Install shell completions |
93
+
94
+ ### `init` options
95
+
96
+ | Flag | Description |
97
+ |------|-------------|
98
+ | `--tools <list>` | Skip interactive selection. Use `all`, `none`, or e.g. `claude,cursor` |
99
+ | `--force` | Skip all confirmations (CI-friendly) |
100
+ | `--profile <name>` | Workflow profile: `core` (default) or `custom` |
101
+
102
+ **Non-interactive example:**
103
+
104
+ ```bash
105
+ pastelsdd init --tools claude --force
106
+ ```
107
+
108
+ ---
109
+
110
+ ## Supported AI Tools
111
+
112
+ | Tool | Skills dir |
113
+ |------|-----------|
114
+ | Claude Code | `.claude/` |
115
+ | Codex CLI | `.codex/` |
116
+ | Cursor | `.cursor/` |
117
+ | Gemini CLI | `.gemini/` |
118
+ | GitHub Copilot | `.github/` |
119
+
120
+ ---
121
+
122
+ ## Migrating from OpenSpec
123
+
124
+ If your project used the old `openspec` tool, `pastelsdd init` detects `.openspec/` automatically and offers to migrate your changes and specs — no manual steps needed.
125
+
126
+ ---
127
+
128
+ ## After Upgrading
129
+
130
+ Re-run `pastelsdd init` (or `pastelsdd update`) to regenerate skill files with the latest instructions:
131
+
132
+ ```bash
133
+ pastelsdd update
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Links
139
+
140
+ - [npm](https://www.npmjs.com/package/@thiagodiogo/pastelsdd)
141
+ - [Repository](https://github.com/eipastel/pastelsdd)
142
+ - [Issues / Feedback](https://github.com/eipastel/pastelsdd/issues)
package/bin/pastelsdd.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  import { runCli } from '../dist/cli/index.js';
4
4
 
@@ -6,7 +6,7 @@
6
6
  import type { ToolCommandAdapter } from '../types.js';
7
7
  /**
8
8
  * Claude Code adapter for command generation.
9
- * File path: .claude/commands/pastel/<id>.md
9
+ * File path: .claude/commands/pstl/<id>.md
10
10
  * Frontmatter: name, description, category, tags
11
11
  */
12
12
  export declare const claudeAdapter: ToolCommandAdapter;
@@ -27,13 +27,13 @@ function formatTagsArray(tags) {
27
27
  }
28
28
  /**
29
29
  * Claude Code adapter for command generation.
30
- * File path: .claude/commands/pastel/<id>.md
30
+ * File path: .claude/commands/pstl/<id>.md
31
31
  * Frontmatter: name, description, category, tags
32
32
  */
33
33
  export const claudeAdapter = {
34
34
  toolId: 'claude',
35
35
  getFilePath(commandId) {
36
- return path.join('.claude', 'commands', 'pastel', `${commandId}.md`);
36
+ return path.join('.claude', 'commands', 'pstl', `${commandId}.md`);
37
37
  },
38
38
  formatFile(content) {
39
39
  return `---
@@ -9,7 +9,7 @@
9
9
  import type { ToolCommandAdapter } from '../types.js';
10
10
  /**
11
11
  * Codex adapter for command generation.
12
- * File path: <CODEX_HOME>/prompts/pastel-<id>.md (absolute, global)
12
+ * File path: <CODEX_HOME>/prompts/pstl-<id>.md (absolute, global)
13
13
  * Frontmatter: description, argument-hint
14
14
  */
15
15
  export declare const codexAdapter: ToolCommandAdapter;
@@ -18,13 +18,13 @@ function getCodexHome() {
18
18
  }
19
19
  /**
20
20
  * Codex adapter for command generation.
21
- * File path: <CODEX_HOME>/prompts/pastel-<id>.md (absolute, global)
21
+ * File path: <CODEX_HOME>/prompts/pstl-<id>.md (absolute, global)
22
22
  * Frontmatter: description, argument-hint
23
23
  */
24
24
  export const codexAdapter = {
25
25
  toolId: 'codex',
26
26
  getFilePath(commandId) {
27
- return path.join(getCodexHome(), 'prompts', `pastel-${commandId}.md`);
27
+ return path.join(getCodexHome(), 'prompts', `pstl-${commandId}.md`);
28
28
  },
29
29
  formatFile(content) {
30
30
  return `---
@@ -7,8 +7,8 @@
7
7
  import type { ToolCommandAdapter } from '../types.js';
8
8
  /**
9
9
  * Cursor adapter for command generation.
10
- * File path: .cursor/commands/pastel-<id>.md
11
- * Frontmatter: name (as /pastel-<id>), id, category, description
10
+ * File path: .cursor/commands/pstl-<id>.md
11
+ * Frontmatter: name (as /pstl-<id>), id, category, description
12
12
  */
13
13
  export declare const cursorAdapter: ToolCommandAdapter;
14
14
  //# sourceMappingURL=cursor.d.ts.map
@@ -21,18 +21,18 @@ function escapeYamlValue(value) {
21
21
  }
22
22
  /**
23
23
  * Cursor adapter for command generation.
24
- * File path: .cursor/commands/pastel-<id>.md
25
- * Frontmatter: name (as /pastel-<id>), id, category, description
24
+ * File path: .cursor/commands/pstl-<id>.md
25
+ * Frontmatter: name (as /pstl-<id>), id, category, description
26
26
  */
27
27
  export const cursorAdapter = {
28
28
  toolId: 'cursor',
29
29
  getFilePath(commandId) {
30
- return path.join('.cursor', 'commands', `pastel-${commandId}.md`);
30
+ return path.join('.cursor', 'commands', `pstl-${commandId}.md`);
31
31
  },
32
32
  formatFile(content) {
33
33
  return `---
34
- name: /pastel-${content.id}
35
- id: pastel-${content.id}
34
+ name: /pstl-${content.id}
35
+ id: pstl-${content.id}
36
36
  category: ${escapeYamlValue(content.category)}
37
37
  description: ${escapeYamlValue(content.description)}
38
38
  ---
@@ -6,7 +6,7 @@
6
6
  import type { ToolCommandAdapter } from '../types.js';
7
7
  /**
8
8
  * Gemini adapter for command generation.
9
- * File path: .gemini/commands/pastel/<id>.toml
9
+ * File path: .gemini/commands/pstl/<id>.toml
10
10
  * Format: TOML with description and prompt fields
11
11
  */
12
12
  export declare const geminiAdapter: ToolCommandAdapter;
@@ -6,13 +6,13 @@
6
6
  import path from 'path';
7
7
  /**
8
8
  * Gemini adapter for command generation.
9
- * File path: .gemini/commands/pastel/<id>.toml
9
+ * File path: .gemini/commands/pstl/<id>.toml
10
10
  * Format: TOML with description and prompt fields
11
11
  */
12
12
  export const geminiAdapter = {
13
13
  toolId: 'gemini',
14
14
  getFilePath(commandId) {
15
- return path.join('.gemini', 'commands', 'pastel', `${commandId}.toml`);
15
+ return path.join('.gemini', 'commands', 'pstl', `${commandId}.toml`);
16
16
  },
17
17
  formatFile(content) {
18
18
  return `description = "${content.description}"
@@ -6,7 +6,7 @@
6
6
  import type { ToolCommandAdapter } from '../types.js';
7
7
  /**
8
8
  * GitHub Copilot adapter for command generation.
9
- * File path: .github/prompts/pastel-<id>.prompt.md
9
+ * File path: .github/prompts/pstl-<id>.prompt.md
10
10
  * Frontmatter: description
11
11
  */
12
12
  export declare const githubCopilotAdapter: ToolCommandAdapter;
@@ -6,13 +6,13 @@
6
6
  import path from 'path';
7
7
  /**
8
8
  * GitHub Copilot adapter for command generation.
9
- * File path: .github/prompts/pastel-<id>.prompt.md
9
+ * File path: .github/prompts/pstl-<id>.prompt.md
10
10
  * Frontmatter: description
11
11
  */
12
12
  export const githubCopilotAdapter = {
13
13
  toolId: 'github-copilot',
14
14
  getFilePath(commandId) {
15
- return path.join('.github', 'prompts', `pastel-${commandId}.prompt.md`);
15
+ return path.join('.github', 'prompts', `pstl-${commandId}.prompt.md`);
16
16
  },
17
17
  formatFile(content) {
18
18
  return `---
@@ -3,30 +3,9 @@
3
3
  *
4
4
  * Re-exports all tool command adapters.
5
5
  */
6
- export { amazonQAdapter } from './amazon-q.js';
7
- export { antigravityAdapter } from './antigravity.js';
8
- export { auggieAdapter } from './auggie.js';
9
- export { bobAdapter } from './bob.js';
10
6
  export { claudeAdapter } from './claude.js';
11
- export { clineAdapter } from './cline.js';
12
7
  export { codexAdapter } from './codex.js';
13
- export { codebuddyAdapter } from './codebuddy.js';
14
- export { continueAdapter } from './continue.js';
15
- export { costrictAdapter } from './costrict.js';
16
- export { crushAdapter } from './crush.js';
17
8
  export { cursorAdapter } from './cursor.js';
18
- export { factoryAdapter } from './factory.js';
19
9
  export { geminiAdapter } from './gemini.js';
20
10
  export { githubCopilotAdapter } from './github-copilot.js';
21
- export { iflowAdapter } from './iflow.js';
22
- export { junieAdapter } from './junie.js';
23
- export { kilocodeAdapter } from './kilocode.js';
24
- export { kiroAdapter } from './kiro.js';
25
- export { opencodeAdapter } from './opencode.js';
26
- export { piAdapter } from './pi.js';
27
- export { qoderAdapter } from './qoder.js';
28
- export { lingmaAdapter } from './lingma.js';
29
- export { qwenAdapter } from './qwen.js';
30
- export { roocodeAdapter } from './roocode.js';
31
- export { windsurfAdapter } from './windsurf.js';
32
11
  //# sourceMappingURL=index.d.ts.map
@@ -3,30 +3,9 @@
3
3
  *
4
4
  * Re-exports all tool command adapters.
5
5
  */
6
- export { amazonQAdapter } from './amazon-q.js';
7
- export { antigravityAdapter } from './antigravity.js';
8
- export { auggieAdapter } from './auggie.js';
9
- export { bobAdapter } from './bob.js';
10
6
  export { claudeAdapter } from './claude.js';
11
- export { clineAdapter } from './cline.js';
12
7
  export { codexAdapter } from './codex.js';
13
- export { codebuddyAdapter } from './codebuddy.js';
14
- export { continueAdapter } from './continue.js';
15
- export { costrictAdapter } from './costrict.js';
16
- export { crushAdapter } from './crush.js';
17
8
  export { cursorAdapter } from './cursor.js';
18
- export { factoryAdapter } from './factory.js';
19
9
  export { geminiAdapter } from './gemini.js';
20
10
  export { githubCopilotAdapter } from './github-copilot.js';
21
- export { iflowAdapter } from './iflow.js';
22
- export { junieAdapter } from './junie.js';
23
- export { kilocodeAdapter } from './kilocode.js';
24
- export { kiroAdapter } from './kiro.js';
25
- export { opencodeAdapter } from './opencode.js';
26
- export { piAdapter } from './pi.js';
27
- export { qoderAdapter } from './qoder.js';
28
- export { lingmaAdapter } from './lingma.js';
29
- export { qwenAdapter } from './qwen.js';
30
- export { roocodeAdapter } from './roocode.js';
31
- export { windsurfAdapter } from './windsurf.js';
32
11
  //# sourceMappingURL=index.js.map
@@ -18,5 +18,5 @@
18
18
  export type { CommandContent, ToolCommandAdapter, GeneratedCommand, } from './types.js';
19
19
  export { CommandAdapterRegistry } from './registry.js';
20
20
  export { generateCommand, generateCommands } from './generator.js';
21
- export { claudeAdapter, cursorAdapter, windsurfAdapter } from './adapters/index.js';
21
+ export { claudeAdapter, codexAdapter, cursorAdapter, geminiAdapter, githubCopilotAdapter } from './adapters/index.js';
22
22
  //# sourceMappingURL=index.d.ts.map
@@ -20,5 +20,5 @@ export { CommandAdapterRegistry } from './registry.js';
20
20
  // Generator functions
21
21
  export { generateCommand, generateCommands } from './generator.js';
22
22
  // Adapters (for direct access if needed)
23
- export { claudeAdapter, cursorAdapter, windsurfAdapter } from './adapters/index.js';
23
+ export { claudeAdapter, codexAdapter, cursorAdapter, geminiAdapter, githubCopilotAdapter } from './adapters/index.js';
24
24
  //# sourceMappingURL=index.js.map
@@ -2,7 +2,6 @@
2
2
  * Command Adapter Registry
3
3
  *
4
4
  * Centralized registry for tool command adapters.
5
- * Similar pattern to existing SlashCommandRegistry in the codebase.
6
5
  */
7
6
  import type { ToolCommandAdapter } from './types.js';
8
7
  /**
@@ -2,34 +2,12 @@
2
2
  * Command Adapter Registry
3
3
  *
4
4
  * Centralized registry for tool command adapters.
5
- * Similar pattern to existing SlashCommandRegistry in the codebase.
6
5
  */
7
- import { amazonQAdapter } from './adapters/amazon-q.js';
8
- import { antigravityAdapter } from './adapters/antigravity.js';
9
- import { auggieAdapter } from './adapters/auggie.js';
10
- import { bobAdapter } from './adapters/bob.js';
11
6
  import { claudeAdapter } from './adapters/claude.js';
12
- import { clineAdapter } from './adapters/cline.js';
13
7
  import { codexAdapter } from './adapters/codex.js';
14
- import { codebuddyAdapter } from './adapters/codebuddy.js';
15
- import { continueAdapter } from './adapters/continue.js';
16
- import { costrictAdapter } from './adapters/costrict.js';
17
- import { crushAdapter } from './adapters/crush.js';
18
8
  import { cursorAdapter } from './adapters/cursor.js';
19
- import { factoryAdapter } from './adapters/factory.js';
20
9
  import { geminiAdapter } from './adapters/gemini.js';
21
10
  import { githubCopilotAdapter } from './adapters/github-copilot.js';
22
- import { iflowAdapter } from './adapters/iflow.js';
23
- import { junieAdapter } from './adapters/junie.js';
24
- import { kilocodeAdapter } from './adapters/kilocode.js';
25
- import { kiroAdapter } from './adapters/kiro.js';
26
- import { opencodeAdapter } from './adapters/opencode.js';
27
- import { piAdapter } from './adapters/pi.js';
28
- import { qoderAdapter } from './adapters/qoder.js';
29
- import { lingmaAdapter } from './adapters/lingma.js';
30
- import { qwenAdapter } from './adapters/qwen.js';
31
- import { roocodeAdapter } from './adapters/roocode.js';
32
- import { windsurfAdapter } from './adapters/windsurf.js';
33
11
  /**
34
12
  * Registry for looking up tool command adapters.
35
13
  */
@@ -37,32 +15,11 @@ export class CommandAdapterRegistry {
37
15
  static adapters = new Map();
38
16
  // Static initializer - register built-in adapters
39
17
  static {
40
- CommandAdapterRegistry.register(amazonQAdapter);
41
- CommandAdapterRegistry.register(antigravityAdapter);
42
- CommandAdapterRegistry.register(auggieAdapter);
43
- CommandAdapterRegistry.register(bobAdapter);
44
18
  CommandAdapterRegistry.register(claudeAdapter);
45
- CommandAdapterRegistry.register(clineAdapter);
46
19
  CommandAdapterRegistry.register(codexAdapter);
47
- CommandAdapterRegistry.register(codebuddyAdapter);
48
- CommandAdapterRegistry.register(continueAdapter);
49
- CommandAdapterRegistry.register(costrictAdapter);
50
- CommandAdapterRegistry.register(crushAdapter);
51
20
  CommandAdapterRegistry.register(cursorAdapter);
52
- CommandAdapterRegistry.register(factoryAdapter);
53
21
  CommandAdapterRegistry.register(geminiAdapter);
54
22
  CommandAdapterRegistry.register(githubCopilotAdapter);
55
- CommandAdapterRegistry.register(iflowAdapter);
56
- CommandAdapterRegistry.register(junieAdapter);
57
- CommandAdapterRegistry.register(kilocodeAdapter);
58
- CommandAdapterRegistry.register(kiroAdapter);
59
- CommandAdapterRegistry.register(opencodeAdapter);
60
- CommandAdapterRegistry.register(piAdapter);
61
- CommandAdapterRegistry.register(qoderAdapter);
62
- CommandAdapterRegistry.register(lingmaAdapter);
63
- CommandAdapterRegistry.register(qwenAdapter);
64
- CommandAdapterRegistry.register(roocodeAdapter);
65
- CommandAdapterRegistry.register(windsurfAdapter);
66
23
  }
67
24
  /**
68
25
  * Register a tool command adapter.
@@ -33,7 +33,7 @@ export interface ToolCommandAdapter {
33
33
  /**
34
34
  * Returns the file path for a command.
35
35
  * @param commandId - The command identifier (e.g., 'explore')
36
- * @returns Path from project root (e.g., '.claude/commands/pastel/explore.md').
36
+ * @returns Path from project root (e.g., '.claude/commands/pstl/explore.md').
37
37
  * May be absolute for tools with global-scoped prompts (e.g., Codex).
38
38
  */
39
39
  getFilePath(commandId: string): string;
@@ -4,35 +4,10 @@ export const PASTELSDD_MARKERS = {
4
4
  end: '<!-- PASTELSDD:END -->'
5
5
  };
6
6
  export const AI_TOOLS = [
7
- { name: 'Amazon Q Developer', value: 'amazon-q', available: true, successLabel: 'Amazon Q Developer', skillsDir: '.amazonq' },
8
- { name: 'Antigravity', value: 'antigravity', available: true, successLabel: 'Antigravity', skillsDir: '.agent' },
9
- { name: 'Auggie (Augment CLI)', value: 'auggie', available: true, successLabel: 'Auggie', skillsDir: '.augment' },
10
- { name: 'Bob Shell', value: 'bob', available: true, successLabel: 'Bob Shell', skillsDir: '.bob' },
11
7
  { name: 'Claude Code', value: 'claude', available: true, successLabel: 'Claude Code', skillsDir: '.claude' },
12
- { name: 'Cline', value: 'cline', available: true, successLabel: 'Cline', skillsDir: '.cline' },
13
8
  { name: 'Codex', value: 'codex', available: true, successLabel: 'Codex', skillsDir: '.codex' },
14
- { name: 'ForgeCode', value: 'forgecode', available: true, successLabel: 'ForgeCode', skillsDir: '.forge' },
15
- { name: 'CodeBuddy Code (CLI)', value: 'codebuddy', available: true, successLabel: 'CodeBuddy Code', skillsDir: '.codebuddy' },
16
- { name: 'Continue', value: 'continue', available: true, successLabel: 'Continue (VS Code / JetBrains / Cli)', skillsDir: '.continue' },
17
- { name: 'CoStrict', value: 'costrict', available: true, successLabel: 'CoStrict', skillsDir: '.cospec' },
18
- { name: 'Crush', value: 'crush', available: true, successLabel: 'Crush', skillsDir: '.crush' },
19
9
  { name: 'Cursor', value: 'cursor', available: true, successLabel: 'Cursor', skillsDir: '.cursor' },
20
- { name: 'Factory Droid', value: 'factory', available: true, successLabel: 'Factory Droid', skillsDir: '.factory' },
21
10
  { name: 'Gemini CLI', value: 'gemini', available: true, successLabel: 'Gemini CLI', skillsDir: '.gemini' },
22
11
  { name: 'GitHub Copilot', value: 'github-copilot', available: true, successLabel: 'GitHub Copilot', skillsDir: '.github', detectionPaths: ['.github/copilot-instructions.md', '.github/instructions', '.github/workflows/copilot-setup-steps.yml', '.github/prompts', '.github/agents', '.github/skills', '.github/.mcp.json'] },
23
- { name: 'iFlow', value: 'iflow', available: true, successLabel: 'iFlow', skillsDir: '.iflow' },
24
- { name: 'Junie', value: 'junie', available: true, successLabel: 'Junie', skillsDir: '.junie' },
25
- { name: 'Kilo Code', value: 'kilocode', available: true, successLabel: 'Kilo Code', skillsDir: '.kilocode' },
26
- { name: 'Kimi CLI', value: 'kimi', available: true, successLabel: 'Kimi CLI', skillsDir: '.kimi' },
27
- { name: 'Kiro', value: 'kiro', available: true, successLabel: 'Kiro', skillsDir: '.kiro' },
28
- { name: 'OpenCode', value: 'opencode', available: true, successLabel: 'OpenCode', skillsDir: '.opencode' },
29
- { name: 'Pi', value: 'pi', available: true, successLabel: 'Pi', skillsDir: '.pi' },
30
- { name: 'Qoder', value: 'qoder', available: true, successLabel: 'Qoder', skillsDir: '.qoder' },
31
- { name: 'Lingma', value: 'lingma', available: true, successLabel: 'Lingma', skillsDir: '.lingma' },
32
- { name: 'Qwen Code', value: 'qwen', available: true, successLabel: 'Qwen Code', skillsDir: '.qwen' },
33
- { name: 'RooCode', value: 'roocode', available: true, successLabel: 'RooCode', skillsDir: '.roo' },
34
- { name: 'Trae', value: 'trae', available: true, successLabel: 'Trae', skillsDir: '.trae' },
35
- { name: 'Windsurf', value: 'windsurf', available: true, successLabel: 'Windsurf', skillsDir: '.windsurf' },
36
- { name: 'AGENTS.md (works with Amp, VS Code, …)', value: 'agents', available: false, successLabel: 'your AGENTS.md-compatible assistant' }
37
12
  ];
38
13
  //# sourceMappingURL=config.js.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Init Command
3
3
  *
4
- * Sets up Pastelsdd with Agent Skills and /pastel:* slash commands.
4
+ * Sets up Pastelsdd with Agent Skills and /pstl:* slash commands.
5
5
  * This is the unified setup command that replaces both the old init and experimental commands.
6
6
  */
7
7
  type InitCommandOptions = {
@@ -20,11 +20,14 @@ export declare class InitCommand {
20
20
  private validate;
21
21
  private canPromptInteractively;
22
22
  private resolveProfileOverride;
23
+ private handleLegacyToolMigration;
24
+ private performLegacyToolMigration;
23
25
  private handleLegacyCleanup;
24
26
  private performLegacyCleanup;
25
27
  private getSelectedTools;
26
28
  private resolveToolsArg;
27
29
  private validateTools;
30
+ private handleTrelloSetup;
28
31
  private createDirectoryStructure;
29
32
  private generateSkillsAndCommands;
30
33
  private createConfig;