@thiagodiogo/pscode 2.0.0 → 2.0.1
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/LICENSE +22 -22
- package/README.md +142 -142
- package/bin/pscode.js +4 -4
- package/dist/commands/feedback.js +4 -4
- package/dist/commands/schema.js +60 -60
- package/dist/core/collections/initiatives/templates.js +57 -57
- package/dist/core/command-generation/adapters/claude.js +8 -8
- package/dist/core/command-generation/adapters/codex.js +6 -6
- package/dist/core/command-generation/adapters/cursor.js +8 -8
- package/dist/core/command-generation/adapters/gemini.js +5 -5
- package/dist/core/command-generation/adapters/github-copilot.js +5 -5
- package/dist/core/completions/generators/bash-generator.js +41 -41
- package/dist/core/completions/generators/fish-generator.js +7 -7
- package/dist/core/completions/generators/powershell-generator.js +29 -29
- package/dist/core/completions/generators/zsh-generator.js +33 -33
- package/dist/core/completions/templates/bash-templates.js +24 -24
- package/dist/core/completions/templates/fish-templates.js +38 -38
- package/dist/core/completions/templates/powershell-templates.js +28 -28
- package/dist/core/completions/templates/zsh-templates.js +39 -39
- package/dist/core/templates/workflows/apply-change.js +264 -264
- package/dist/core/templates/workflows/archive-change.js +204 -204
- package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
- package/dist/core/templates/workflows/continue-change.js +214 -214
- package/dist/core/templates/workflows/explore.js +735 -735
- package/dist/core/templates/workflows/feedback.js +97 -97
- package/dist/core/templates/workflows/ff-change.js +180 -180
- package/dist/core/templates/workflows/new-change.js +123 -123
- package/dist/core/templates/workflows/onboard.js +584 -584
- package/dist/core/templates/workflows/propose.js +324 -324
- package/dist/core/templates/workflows/trello-draft.js +194 -194
- package/dist/core/templates/workflows/trello-setup.js +292 -292
- package/dist/core/templates/workflows/verify-change.js +318 -318
- package/dist/core/workspace/open-surface.js +30 -30
- package/package.json +1 -1
- package/schemas/spec-driven/schema.yaml +153 -153
- package/schemas/spec-driven/templates/design.md +19 -19
- package/schemas/spec-driven/templates/proposal.md +23 -23
- package/schemas/spec-driven/templates/spec.md +8 -8
- package/schemas/spec-driven/templates/tasks.md +9 -9
- package/schemas/workspace-planning/schema.yaml +72 -72
- package/schemas/workspace-planning/templates/design.md +33 -33
- package/schemas/workspace-planning/templates/proposal.md +28 -28
- package/schemas/workspace-planning/templates/spec.md +9 -9
- package/schemas/workspace-planning/templates/tasks.md +15 -15
- package/scripts/postinstall.js +83 -83
|
@@ -9,200 +9,200 @@ export function getTrelloDraftSkillTemplate() {
|
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
11
|
function getTrelloDraftInstructions() {
|
|
12
|
-
return `Capture uma ideia ou conceito bruto diretamente no Backlog do Trello.
|
|
13
|
-
|
|
14
|
-
**Input**: Texto após \`/ps:draft\` é a descrição da ideia (pode ser bem rascunho — palavras soltas, fragmentos, intuições vagas).
|
|
15
|
-
Se omitido, perguntar ao usuário.
|
|
16
|
-
|
|
17
|
-
Este comando é intencionalmente sem atrito. Diferente de \`/ps:task\`, faz estruturação mínima — o objetivo é velocidade de captura, não clareza.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Step 1 — Read Trello config
|
|
22
|
-
|
|
23
|
-
Use the **Read tool** (NOT a shell command) to read \`pscode/trello.yaml\` from the current working directory.
|
|
24
|
-
The Read tool is cross-platform and works on Windows, macOS, and Linux — never use \`cat\` or shell commands to read this file.
|
|
25
|
-
If the Read tool returns an error (file not found), treat it as "NO_TRELLO_CONFIG".
|
|
26
|
-
|
|
27
|
-
**If file not found:**
|
|
28
|
-
> ⚠️ Trello não está configurado neste projeto.
|
|
29
|
-
> Execute \`/ps:trello-setup\` para configurar a integração antes de usar este comando.
|
|
30
|
-
|
|
31
|
-
Stop here if no config.
|
|
32
|
-
|
|
33
|
-
Parse the YAML and extract:
|
|
34
|
-
- \`boardId\`
|
|
35
|
-
- \`lists.backlog.id\` → the list where the card will be created
|
|
36
|
-
- \`lists.backlog.name\` → for display purposes
|
|
37
|
-
- \`labels\` → \`{ enabled: bool, items?: { bug, implementacao, melhoria, debito-tecnico } }\`
|
|
38
|
-
|
|
39
|
-
**If \`lists.backlog\` is not configured:**
|
|
40
|
-
> ⚠️ Estágio "backlog" não está configurado em \`pscode/trello.yaml\`.
|
|
41
|
-
>
|
|
42
|
-
> Execute \`/ps:trello-setup\` para configurar a integração.
|
|
43
|
-
|
|
44
|
-
Stop here if backlog list is missing.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Step 2 — Collect the idea
|
|
49
|
-
|
|
50
|
-
If the user provided text, use it as-is.
|
|
51
|
-
|
|
52
|
-
If nothing was provided, use **AskUserQuestion** to ask:
|
|
53
|
-
> "Qual ideia você quer registrar? (pode ser bem rascunho mesmo)"
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Step 3 — Minimal structuring
|
|
58
|
-
|
|
59
|
-
Apply only light formatting. Do NOT over-engineer — this is a draft.
|
|
60
|
-
|
|
61
|
-
Produce:
|
|
62
|
-
|
|
63
|
-
**a. \`title\`** — The idea in up to ~80 chars, starting with a noun or verb.
|
|
64
|
-
- Keep the user's original wording as much as possible
|
|
65
|
-
- **No emojis** in the title
|
|
66
|
-
|
|
67
|
-
**b. \`context\`** (optional, 1–2 sentences max) — Only add if there's obvious project context to attach.
|
|
68
|
-
If the idea is self-contained or opaque, leave blank.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Step 4 — Detect label (if labels enabled)
|
|
73
|
-
|
|
74
|
-
**Only run this step if \`labels.enabled = true\` and \`labels.items\` is present in config.**
|
|
75
|
-
|
|
76
|
-
Analyze the idea text and title to determine which label best fits.
|
|
77
|
-
Use these classification rules:
|
|
78
|
-
|
|
79
|
-
| Label | Quando usar |
|
|
80
|
-
|-----------------|-----------------------------------------------------------------------------|
|
|
81
|
-
| 🐛 BUG | Menciona erro, falha, bug, quebrado, não funciona, comportamento errado |
|
|
82
|
-
| ⚙️ IMPLEMENTAÇÃO | Nova feature, adicionar, criar, implementar algo que não existe ainda |
|
|
83
|
-
| ✨ MELHORIA | Melhorar, otimizar, refinar, aprimorar algo que já existe |
|
|
84
|
-
| 💳 DÉBITO TÉCNICO | Refatorar, limpar, reorganizar, remover código legado, dívida técnica |
|
|
85
|
-
|
|
86
|
-
**Decision logic:**
|
|
87
|
-
|
|
88
|
-
1. If the idea clearly matches one label with high confidence (>80%) → use it silently, without asking.
|
|
89
|
-
2. If the idea is ambiguous or could fit 2+ labels → use **AskUserQuestion** to ask:
|
|
90
|
-
> "Que tipo de card é esse?"
|
|
91
|
-
> - 🐛 BUG — Erro ou comportamento incorreto
|
|
92
|
-
> - ⚙️ IMPLEMENTAÇÃO — Nova funcionalidade
|
|
93
|
-
> - ✨ MELHORIA — Aperfeiçoamento de algo existente
|
|
94
|
-
> - 💳 DÉBITO TÉCNICO — Refatoração e limpeza de código
|
|
95
|
-
> - Sem label — Não categorizar
|
|
96
|
-
|
|
97
|
-
3. If the label key chosen is not in \`labels.items\` (user may have configured a subset), skip labeling.
|
|
98
|
-
|
|
99
|
-
Save the resolved label as \`chosenLabel\` (or \`null\` if no label applies or user chose "Sem label").
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## Step 5 — Assemble the card description
|
|
104
|
-
|
|
105
|
-
**No emojis anywhere in the description.**
|
|
106
|
-
|
|
107
|
-
If context is present:
|
|
108
|
-
\`\`\`
|
|
109
|
-
<context>
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
Ideia original: "<raw input verbatim>"
|
|
113
|
-
|
|
114
|
-
Proximo passo: /ps:propose para refinar e gerar os artefatos da change.
|
|
115
|
-
\`\`\`
|
|
116
|
-
|
|
117
|
-
If no context:
|
|
118
|
-
\`\`\`
|
|
119
|
-
Ideia original: "<raw input verbatim>"
|
|
120
|
-
|
|
121
|
-
Proximo passo: /ps:propose para refinar e gerar os artefatos da change.
|
|
122
|
-
\`\`\`
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Step 6 — Create the card
|
|
127
|
-
|
|
128
|
-
\`\`\`tool
|
|
129
|
-
mcp__claude_ai_Trello_Custom__create_card
|
|
130
|
-
list_id: "<lists.backlog.id>"
|
|
131
|
-
name: "<title>"
|
|
132
|
-
desc: "<assembled description>"
|
|
133
|
-
\`\`\`
|
|
134
|
-
|
|
135
|
-
**Do NOT assign any member.**
|
|
136
|
-
|
|
137
|
-
Save the returned card \`id\` as \`cardId\` and \`url\` as \`cardUrl\`.
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## Step 7 — Add next-step comment
|
|
142
|
-
|
|
143
|
-
Add a comment to the card with the command to take this task to the next stage,
|
|
144
|
-
formatted in Markdown so it is easy to copy and paste.
|
|
145
|
-
|
|
146
|
-
\`\`\`tool
|
|
147
|
-
mcp__claude_ai_Trello_Custom__add_comment
|
|
148
|
-
card_id: "<cardId>"
|
|
149
|
-
text: |
|
|
150
|
-
## Próximo passo
|
|
151
|
-
|
|
152
|
-
Para refinar e gerar os artefatos da change, rode:
|
|
153
|
-
|
|
154
|
-
\`\`\`
|
|
155
|
-
/ps:propose
|
|
156
|
-
\`\`\`
|
|
157
|
-
\`\`\`
|
|
158
|
-
|
|
159
|
-
If this call fails, log the error and continue — the comment is auxiliary, never blocking.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Step 8 — Apply label (if resolved)
|
|
164
|
-
|
|
165
|
-
**Only if \`chosenLabel\` is not null:**
|
|
166
|
-
|
|
167
|
-
\`\`\`tool
|
|
168
|
-
mcp__claude_ai_Trello_Custom__add_label_to_card
|
|
169
|
-
card_id: "<cardId>"
|
|
170
|
-
label_id: "<chosenLabel.id>"
|
|
171
|
-
\`\`\`
|
|
172
|
-
|
|
173
|
-
If this call fails, log the error and continue — label is auxiliary, never blocking.
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Step 9 — Show summary
|
|
178
|
-
|
|
179
|
-
\`\`\`
|
|
180
|
-
## Ideia registrada ✓
|
|
181
|
-
|
|
182
|
-
**Título:** <title>
|
|
183
|
-
**Lista:** <lists.backlog.name>
|
|
184
|
-
**Label:** <chosenLabel emoji + name> (ou "sem label" se não aplicada)
|
|
185
|
-
**Card:** <cardUrl>
|
|
186
|
-
|
|
187
|
-
Comando da próxima etapa adicionado nos comentários do card.
|
|
188
|
-
Sem responsável atribuído.
|
|
189
|
-
Quando quiser refinar: \`/ps:explore\` ou \`/ps:task\`
|
|
190
|
-
Quando quiser propor diretamente: \`/ps:propose\`
|
|
191
|
-
\`\`\`
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## Guardrails
|
|
196
|
-
|
|
197
|
-
- **Mínima intervenção** — o valor deste comando é a velocidade de captura; não refinar demais
|
|
198
|
-
- **Preservar o texto original** verbatim na descrição
|
|
199
|
-
- **Nunca atribuir membro** — cards de draft são sempre sem dono
|
|
200
|
-
- **Nunca criar change** (\`pscode new change\`) — este comando é apenas Trello
|
|
201
|
-
- **Se MCP falhar**, exibir o conteúdo no chat para registro manual
|
|
202
|
-
- **Título em português** por padrão, mas se o usuário escreveu em inglês, manter em inglês
|
|
203
|
-
- **Labels são opcionais** — se \`labels.enabled = false\` ou o call MCP falhar, continuar sem label
|
|
204
|
-
- **Comentário com o comando da próxima etapa é auxiliar** — se o MCP falhar ao comentar, não bloquear a criação do card
|
|
205
|
-
- **Perguntar sobre label apenas quando ambíguo** — para ideias claras, classificar silenciosamente
|
|
12
|
+
return `Capture uma ideia ou conceito bruto diretamente no Backlog do Trello.
|
|
13
|
+
|
|
14
|
+
**Input**: Texto após \`/ps:draft\` é a descrição da ideia (pode ser bem rascunho — palavras soltas, fragmentos, intuições vagas).
|
|
15
|
+
Se omitido, perguntar ao usuário.
|
|
16
|
+
|
|
17
|
+
Este comando é intencionalmente sem atrito. Diferente de \`/ps:task\`, faz estruturação mínima — o objetivo é velocidade de captura, não clareza.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Step 1 — Read Trello config
|
|
22
|
+
|
|
23
|
+
Use the **Read tool** (NOT a shell command) to read \`pscode/trello.yaml\` from the current working directory.
|
|
24
|
+
The Read tool is cross-platform and works on Windows, macOS, and Linux — never use \`cat\` or shell commands to read this file.
|
|
25
|
+
If the Read tool returns an error (file not found), treat it as "NO_TRELLO_CONFIG".
|
|
26
|
+
|
|
27
|
+
**If file not found:**
|
|
28
|
+
> ⚠️ Trello não está configurado neste projeto.
|
|
29
|
+
> Execute \`/ps:trello-setup\` para configurar a integração antes de usar este comando.
|
|
30
|
+
|
|
31
|
+
Stop here if no config.
|
|
32
|
+
|
|
33
|
+
Parse the YAML and extract:
|
|
34
|
+
- \`boardId\`
|
|
35
|
+
- \`lists.backlog.id\` → the list where the card will be created
|
|
36
|
+
- \`lists.backlog.name\` → for display purposes
|
|
37
|
+
- \`labels\` → \`{ enabled: bool, items?: { bug, implementacao, melhoria, debito-tecnico } }\`
|
|
38
|
+
|
|
39
|
+
**If \`lists.backlog\` is not configured:**
|
|
40
|
+
> ⚠️ Estágio "backlog" não está configurado em \`pscode/trello.yaml\`.
|
|
41
|
+
>
|
|
42
|
+
> Execute \`/ps:trello-setup\` para configurar a integração.
|
|
43
|
+
|
|
44
|
+
Stop here if backlog list is missing.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Step 2 — Collect the idea
|
|
49
|
+
|
|
50
|
+
If the user provided text, use it as-is.
|
|
51
|
+
|
|
52
|
+
If nothing was provided, use **AskUserQuestion** to ask:
|
|
53
|
+
> "Qual ideia você quer registrar? (pode ser bem rascunho mesmo)"
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Step 3 — Minimal structuring
|
|
58
|
+
|
|
59
|
+
Apply only light formatting. Do NOT over-engineer — this is a draft.
|
|
60
|
+
|
|
61
|
+
Produce:
|
|
62
|
+
|
|
63
|
+
**a. \`title\`** — The idea in up to ~80 chars, starting with a noun or verb.
|
|
64
|
+
- Keep the user's original wording as much as possible
|
|
65
|
+
- **No emojis** in the title
|
|
66
|
+
|
|
67
|
+
**b. \`context\`** (optional, 1–2 sentences max) — Only add if there's obvious project context to attach.
|
|
68
|
+
If the idea is self-contained or opaque, leave blank.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Step 4 — Detect label (if labels enabled)
|
|
73
|
+
|
|
74
|
+
**Only run this step if \`labels.enabled = true\` and \`labels.items\` is present in config.**
|
|
75
|
+
|
|
76
|
+
Analyze the idea text and title to determine which label best fits.
|
|
77
|
+
Use these classification rules:
|
|
78
|
+
|
|
79
|
+
| Label | Quando usar |
|
|
80
|
+
|-----------------|-----------------------------------------------------------------------------|
|
|
81
|
+
| 🐛 BUG | Menciona erro, falha, bug, quebrado, não funciona, comportamento errado |
|
|
82
|
+
| ⚙️ IMPLEMENTAÇÃO | Nova feature, adicionar, criar, implementar algo que não existe ainda |
|
|
83
|
+
| ✨ MELHORIA | Melhorar, otimizar, refinar, aprimorar algo que já existe |
|
|
84
|
+
| 💳 DÉBITO TÉCNICO | Refatorar, limpar, reorganizar, remover código legado, dívida técnica |
|
|
85
|
+
|
|
86
|
+
**Decision logic:**
|
|
87
|
+
|
|
88
|
+
1. If the idea clearly matches one label with high confidence (>80%) → use it silently, without asking.
|
|
89
|
+
2. If the idea is ambiguous or could fit 2+ labels → use **AskUserQuestion** to ask:
|
|
90
|
+
> "Que tipo de card é esse?"
|
|
91
|
+
> - 🐛 BUG — Erro ou comportamento incorreto
|
|
92
|
+
> - ⚙️ IMPLEMENTAÇÃO — Nova funcionalidade
|
|
93
|
+
> - ✨ MELHORIA — Aperfeiçoamento de algo existente
|
|
94
|
+
> - 💳 DÉBITO TÉCNICO — Refatoração e limpeza de código
|
|
95
|
+
> - Sem label — Não categorizar
|
|
96
|
+
|
|
97
|
+
3. If the label key chosen is not in \`labels.items\` (user may have configured a subset), skip labeling.
|
|
98
|
+
|
|
99
|
+
Save the resolved label as \`chosenLabel\` (or \`null\` if no label applies or user chose "Sem label").
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Step 5 — Assemble the card description
|
|
104
|
+
|
|
105
|
+
**No emojis anywhere in the description.**
|
|
106
|
+
|
|
107
|
+
If context is present:
|
|
108
|
+
\`\`\`
|
|
109
|
+
<context>
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
Ideia original: "<raw input verbatim>"
|
|
113
|
+
|
|
114
|
+
Proximo passo: /ps:propose para refinar e gerar os artefatos da change.
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
If no context:
|
|
118
|
+
\`\`\`
|
|
119
|
+
Ideia original: "<raw input verbatim>"
|
|
120
|
+
|
|
121
|
+
Proximo passo: /ps:propose para refinar e gerar os artefatos da change.
|
|
122
|
+
\`\`\`
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Step 6 — Create the card
|
|
127
|
+
|
|
128
|
+
\`\`\`tool
|
|
129
|
+
mcp__claude_ai_Trello_Custom__create_card
|
|
130
|
+
list_id: "<lists.backlog.id>"
|
|
131
|
+
name: "<title>"
|
|
132
|
+
desc: "<assembled description>"
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
**Do NOT assign any member.**
|
|
136
|
+
|
|
137
|
+
Save the returned card \`id\` as \`cardId\` and \`url\` as \`cardUrl\`.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Step 7 — Add next-step comment
|
|
142
|
+
|
|
143
|
+
Add a comment to the card with the command to take this task to the next stage,
|
|
144
|
+
formatted in Markdown so it is easy to copy and paste.
|
|
145
|
+
|
|
146
|
+
\`\`\`tool
|
|
147
|
+
mcp__claude_ai_Trello_Custom__add_comment
|
|
148
|
+
card_id: "<cardId>"
|
|
149
|
+
text: |
|
|
150
|
+
## Próximo passo
|
|
151
|
+
|
|
152
|
+
Para refinar e gerar os artefatos da change, rode:
|
|
153
|
+
|
|
154
|
+
\`\`\`
|
|
155
|
+
/ps:propose
|
|
156
|
+
\`\`\`
|
|
157
|
+
\`\`\`
|
|
158
|
+
|
|
159
|
+
If this call fails, log the error and continue — the comment is auxiliary, never blocking.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Step 8 — Apply label (if resolved)
|
|
164
|
+
|
|
165
|
+
**Only if \`chosenLabel\` is not null:**
|
|
166
|
+
|
|
167
|
+
\`\`\`tool
|
|
168
|
+
mcp__claude_ai_Trello_Custom__add_label_to_card
|
|
169
|
+
card_id: "<cardId>"
|
|
170
|
+
label_id: "<chosenLabel.id>"
|
|
171
|
+
\`\`\`
|
|
172
|
+
|
|
173
|
+
If this call fails, log the error and continue — label is auxiliary, never blocking.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Step 9 — Show summary
|
|
178
|
+
|
|
179
|
+
\`\`\`
|
|
180
|
+
## Ideia registrada ✓
|
|
181
|
+
|
|
182
|
+
**Título:** <title>
|
|
183
|
+
**Lista:** <lists.backlog.name>
|
|
184
|
+
**Label:** <chosenLabel emoji + name> (ou "sem label" se não aplicada)
|
|
185
|
+
**Card:** <cardUrl>
|
|
186
|
+
|
|
187
|
+
Comando da próxima etapa adicionado nos comentários do card.
|
|
188
|
+
Sem responsável atribuído.
|
|
189
|
+
Quando quiser refinar: \`/ps:explore\` ou \`/ps:task\`
|
|
190
|
+
Quando quiser propor diretamente: \`/ps:propose\`
|
|
191
|
+
\`\`\`
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Guardrails
|
|
196
|
+
|
|
197
|
+
- **Mínima intervenção** — o valor deste comando é a velocidade de captura; não refinar demais
|
|
198
|
+
- **Preservar o texto original** verbatim na descrição
|
|
199
|
+
- **Nunca atribuir membro** — cards de draft são sempre sem dono
|
|
200
|
+
- **Nunca criar change** (\`pscode new change\`) — este comando é apenas Trello
|
|
201
|
+
- **Se MCP falhar**, exibir o conteúdo no chat para registro manual
|
|
202
|
+
- **Título em português** por padrão, mas se o usuário escreveu em inglês, manter em inglês
|
|
203
|
+
- **Labels são opcionais** — se \`labels.enabled = false\` ou o call MCP falhar, continuar sem label
|
|
204
|
+
- **Comentário com o comando da próxima etapa é auxiliar** — se o MCP falhar ao comentar, não bloquear a criação do card
|
|
205
|
+
- **Perguntar sobre label apenas quando ambíguo** — para ideias claras, classificar silenciosamente
|
|
206
206
|
`;
|
|
207
207
|
}
|
|
208
208
|
export function getTrelloDraftCommandTemplate() {
|