@thiagodiogo/pscode 2.0.0 → 2.1.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.
Files changed (49) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +142 -142
  3. package/bin/pscode.js +4 -4
  4. package/dist/commands/feedback.js +4 -4
  5. package/dist/commands/schema.js +60 -60
  6. package/dist/core/collections/initiatives/templates.js +57 -57
  7. package/dist/core/command-generation/adapters/claude.js +8 -8
  8. package/dist/core/command-generation/adapters/codex.js +6 -6
  9. package/dist/core/command-generation/adapters/cursor.js +8 -8
  10. package/dist/core/command-generation/adapters/gemini.js +5 -5
  11. package/dist/core/command-generation/adapters/github-copilot.js +5 -5
  12. package/dist/core/completions/generators/bash-generator.js +41 -41
  13. package/dist/core/completions/generators/fish-generator.js +7 -7
  14. package/dist/core/completions/generators/powershell-generator.js +29 -29
  15. package/dist/core/completions/generators/zsh-generator.js +33 -33
  16. package/dist/core/completions/templates/bash-templates.js +24 -24
  17. package/dist/core/completions/templates/fish-templates.js +38 -38
  18. package/dist/core/completions/templates/powershell-templates.js +28 -28
  19. package/dist/core/completions/templates/zsh-templates.js +39 -39
  20. package/dist/core/profiles.d.ts +1 -1
  21. package/dist/core/profiles.js +1 -1
  22. package/dist/core/templates/workflows/apply-change.js +264 -264
  23. package/dist/core/templates/workflows/archive-change.js +204 -204
  24. package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
  25. package/dist/core/templates/workflows/continue-change.js +214 -214
  26. package/dist/core/templates/workflows/explore.js +735 -735
  27. package/dist/core/templates/workflows/feedback.js +97 -97
  28. package/dist/core/templates/workflows/ff-change.js +180 -180
  29. package/dist/core/templates/workflows/new-change.js +123 -123
  30. package/dist/core/templates/workflows/onboard.js +584 -584
  31. package/dist/core/templates/workflows/propose.js +324 -324
  32. package/dist/core/templates/workflows/trello-draft.js +194 -194
  33. package/dist/core/templates/workflows/trello-next-step-comment.d.ts +26 -0
  34. package/dist/core/templates/workflows/trello-next-step-comment.js +58 -0
  35. package/dist/core/templates/workflows/trello-setup.js +292 -292
  36. package/dist/core/templates/workflows/verify-change.js +318 -318
  37. package/dist/core/workspace/open-surface.js +30 -30
  38. package/package.json +1 -1
  39. package/schemas/spec-driven/schema.yaml +153 -153
  40. package/schemas/spec-driven/templates/design.md +19 -19
  41. package/schemas/spec-driven/templates/proposal.md +23 -23
  42. package/schemas/spec-driven/templates/spec.md +8 -8
  43. package/schemas/spec-driven/templates/tasks.md +9 -9
  44. package/schemas/workspace-planning/schema.yaml +72 -72
  45. package/schemas/workspace-planning/templates/design.md +33 -33
  46. package/schemas/workspace-planning/templates/proposal.md +28 -28
  47. package/schemas/workspace-planning/templates/spec.md +9 -9
  48. package/schemas/workspace-planning/templates/tasks.md +15 -15
  49. package/scripts/postinstall.js +83 -83
@@ -30,14 +30,14 @@ export const cursorAdapter = {
30
30
  return path.join('.cursor', 'commands', `ps-${commandId}.md`);
31
31
  },
32
32
  formatFile(content) {
33
- return `---
34
- name: /ps-${content.id}
35
- id: ps-${content.id}
36
- category: ${escapeYamlValue(content.category)}
37
- description: ${escapeYamlValue(content.description)}
38
- ---
39
-
40
- ${content.body}
33
+ return `---
34
+ name: /ps-${content.id}
35
+ id: ps-${content.id}
36
+ category: ${escapeYamlValue(content.category)}
37
+ description: ${escapeYamlValue(content.description)}
38
+ ---
39
+
40
+ ${content.body}
41
41
  `;
42
42
  },
43
43
  };
@@ -15,11 +15,11 @@ export const geminiAdapter = {
15
15
  return path.join('.gemini', 'commands', 'ps', `${commandId}.toml`);
16
16
  },
17
17
  formatFile(content) {
18
- return `description = "${content.description}"
19
-
20
- prompt = """
21
- ${content.body}
22
- """
18
+ return `description = "${content.description}"
19
+
20
+ prompt = """
21
+ ${content.body}
22
+ """
23
23
  `;
24
24
  },
25
25
  };
@@ -15,11 +15,11 @@ export const githubCopilotAdapter = {
15
15
  return path.join('.github', 'prompts', `ps-${commandId}.prompt.md`);
16
16
  },
17
17
  formatFile(content) {
18
- return `---
19
- description: ${content.description}
20
- ---
21
-
22
- ${content.body}
18
+ return `---
19
+ description: ${content.description}
20
+ ---
21
+
22
+ ${content.body}
23
23
  `;
24
24
  },
25
25
  };
@@ -25,47 +25,47 @@ export class BashGenerator {
25
25
  // Dynamic completion helpers from template
26
26
  const helpers = BASH_DYNAMIC_HELPERS;
27
27
  // Assemble final script with template literal
28
- return `# Bash completion script for Pscode CLI
29
- # Auto-generated - do not edit manually
30
-
31
- _pscode_completion() {
32
- local cur prev words cword
33
-
34
- # Use _init_completion if available (from bash-completion package)
35
- # The -n : option prevents colons from being treated as word separators
36
- # (important for spec/change IDs that may contain colons)
37
- # Otherwise, fall back to manual initialization
38
- if declare -F _init_completion >/dev/null 2>&1; then
39
- _init_completion -n : || return
40
- else
41
- # Manual fallback when bash-completion is not installed
42
- COMPREPLY=()
43
- cur="\${COMP_WORDS[COMP_CWORD]}"
44
- prev="\${COMP_WORDS[COMP_CWORD-1]}"
45
- words=("\${COMP_WORDS[@]}")
46
- cword=$COMP_CWORD
47
- fi
48
-
49
- local cmd="\${words[1]}"
50
- local subcmd="\${words[2]}"
51
-
52
- # Top-level commands
53
- if [[ $cword -eq 1 ]]; then
54
- local commands="${commandList}"
55
- COMPREPLY=($(compgen -W "$commands" -- "$cur"))
56
- return 0
57
- fi
58
-
59
- # Command-specific completion
60
- case "$cmd" in
61
- ${commandCases}
62
- esac
63
-
64
- return 0
65
- }
66
-
67
- ${helpers}
68
- complete -F _pscode_completion pscode
28
+ return `# Bash completion script for Pscode CLI
29
+ # Auto-generated - do not edit manually
30
+
31
+ _pscode_completion() {
32
+ local cur prev words cword
33
+
34
+ # Use _init_completion if available (from bash-completion package)
35
+ # The -n : option prevents colons from being treated as word separators
36
+ # (important for spec/change IDs that may contain colons)
37
+ # Otherwise, fall back to manual initialization
38
+ if declare -F _init_completion >/dev/null 2>&1; then
39
+ _init_completion -n : || return
40
+ else
41
+ # Manual fallback when bash-completion is not installed
42
+ COMPREPLY=()
43
+ cur="\${COMP_WORDS[COMP_CWORD]}"
44
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
45
+ words=("\${COMP_WORDS[@]}")
46
+ cword=$COMP_CWORD
47
+ fi
48
+
49
+ local cmd="\${words[1]}"
50
+ local subcmd="\${words[2]}"
51
+
52
+ # Top-level commands
53
+ if [[ $cword -eq 1 ]]; then
54
+ local commands="${commandList}"
55
+ COMPREPLY=($(compgen -W "$commands" -- "$cur"))
56
+ return 0
57
+ fi
58
+
59
+ # Command-specific completion
60
+ case "$cmd" in
61
+ ${commandCases}
62
+ esac
63
+
64
+ return 0
65
+ }
66
+
67
+ ${helpers}
68
+ complete -F _pscode_completion pscode
69
69
  `;
70
70
  }
71
71
  /**
@@ -31,13 +31,13 @@ export class FishGenerator {
31
31
  // Dynamic completion helpers from template
32
32
  const dynamicHelpers = FISH_DYNAMIC_HELPERS;
33
33
  // Assemble final script with template literal
34
- return `# Fish completion script for Pscode CLI
35
- # Auto-generated - do not edit manually
36
-
37
- ${helperFunctions}
38
- ${dynamicHelpers}
39
- ${topLevelCommands}
40
-
34
+ return `# Fish completion script for Pscode CLI
35
+ # Auto-generated - do not edit manually
36
+
37
+ ${helperFunctions}
38
+ ${dynamicHelpers}
39
+ ${topLevelCommands}
40
+
41
41
  ${commandCompletions}`;
42
42
  }
43
43
  /**
@@ -35,35 +35,35 @@ export class PowerShellGenerator {
35
35
  // Dynamic completion helpers from template
36
36
  const helpers = POWERSHELL_DYNAMIC_HELPERS;
37
37
  // Assemble final script with template literal
38
- return `# PowerShell completion script for Pscode CLI
39
- # Auto-generated - do not edit manually
40
-
41
- ${helpers}
42
- $pscodeCompleter = {
43
- param($wordToComplete, $commandAst, $cursorPosition)
44
-
45
- $tokens = $commandAst.ToString() -split "\\s+"
46
- $commandCount = ($tokens | Measure-Object).Count
47
-
48
- # Top-level commands
49
- if ($commandCount -eq 1 -or ($commandCount -eq 2 -and $wordToComplete)) {
50
- $commands = @(
51
- ${topLevelCommands}
52
- )
53
- $commands | Where-Object { $_.Name -like "$wordToComplete*" } | ForEach-Object {
54
- [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, "ParameterValue", $_.Description)
55
- }
56
- return
57
- }
58
-
59
- $command = $tokens[1]
60
-
61
- switch ($command) {
62
- ${commandCases}
63
- }
64
- }
65
-
66
- Register-ArgumentCompleter -CommandName pscode -ScriptBlock $pscodeCompleter
38
+ return `# PowerShell completion script for Pscode CLI
39
+ # Auto-generated - do not edit manually
40
+
41
+ ${helpers}
42
+ $pscodeCompleter = {
43
+ param($wordToComplete, $commandAst, $cursorPosition)
44
+
45
+ $tokens = $commandAst.ToString() -split "\\s+"
46
+ $commandCount = ($tokens | Measure-Object).Count
47
+
48
+ # Top-level commands
49
+ if ($commandCount -eq 1 -or ($commandCount -eq 2 -and $wordToComplete)) {
50
+ $commands = @(
51
+ ${topLevelCommands}
52
+ )
53
+ $commands | Where-Object { $_.Name -like "$wordToComplete*" } | ForEach-Object {
54
+ [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, "ParameterValue", $_.Description)
55
+ }
56
+ return
57
+ }
58
+
59
+ $command = $tokens[1]
60
+
61
+ switch ($command) {
62
+ ${commandCases}
63
+ }
64
+ }
65
+
66
+ Register-ArgumentCompleter -CommandName pscode -ScriptBlock $pscodeCompleter
67
67
  `;
68
68
  }
69
69
  /**
@@ -37,39 +37,39 @@ export class ZshGenerator {
37
37
  // Dynamic completion helpers from template
38
38
  const helpers = ZSH_DYNAMIC_HELPERS;
39
39
  // Assemble final script with template literal
40
- return `#compdef pscode
41
-
42
- # Zsh completion script for Pscode CLI
43
- # Auto-generated - do not edit manually
44
-
45
- _pscode() {
46
- local context state line
47
- typeset -A opt_args
48
-
49
- local -a commands
50
- commands=(
51
- ${commandList}
52
- )
53
-
54
- _arguments -C \\
55
- "1: :->command" \\
56
- "*::arg:->args"
57
-
58
- case $state in
59
- command)
60
- _describe "pscode command" commands
61
- ;;
62
- args)
63
- case $words[1] in
64
- ${commandCases}
65
- esac
66
- ;;
67
- esac
68
- }
69
-
70
- ${commandFunctions}
71
- ${helpers}
72
- compdef _pscode pscode
40
+ return `#compdef pscode
41
+
42
+ # Zsh completion script for Pscode CLI
43
+ # Auto-generated - do not edit manually
44
+
45
+ _pscode() {
46
+ local context state line
47
+ typeset -A opt_args
48
+
49
+ local -a commands
50
+ commands=(
51
+ ${commandList}
52
+ )
53
+
54
+ _arguments -C \\
55
+ "1: :->command" \\
56
+ "*::arg:->args"
57
+
58
+ case $state in
59
+ command)
60
+ _describe "pscode command" commands
61
+ ;;
62
+ args)
63
+ case $words[1] in
64
+ ${commandCases}
65
+ esac
66
+ ;;
67
+ esac
68
+ }
69
+
70
+ ${commandFunctions}
71
+ ${helpers}
72
+ compdef _pscode pscode
73
73
  `;
74
74
  }
75
75
  /**
@@ -2,29 +2,29 @@
2
2
  * Static template strings for Bash completion scripts.
3
3
  * These are Bash-specific helper functions that never change.
4
4
  */
5
- export const BASH_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
-
7
- _pscode_complete_changes() {
8
- local changes
9
- changes=$(pscode __complete changes 2>/dev/null | cut -f1)
10
- COMPREPLY=($(compgen -W "$changes" -- "$cur"))
11
- }
12
-
13
- _pscode_complete_specs() {
14
- local specs
15
- specs=$(pscode __complete specs 2>/dev/null | cut -f1)
16
- COMPREPLY=($(compgen -W "$specs" -- "$cur"))
17
- }
18
-
19
- _pscode_complete_items() {
20
- local items
21
- items=$(pscode __complete changes 2>/dev/null | cut -f1; pscode __complete specs 2>/dev/null | cut -f1)
22
- COMPREPLY=($(compgen -W "$items" -- "$cur"))
23
- }
24
-
25
- _pscode_complete_schemas() {
26
- local schemas
27
- schemas=$(pscode __complete schemas 2>/dev/null | cut -f1)
28
- COMPREPLY=($(compgen -W "$schemas" -- "$cur"))
5
+ export const BASH_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
+
7
+ _pscode_complete_changes() {
8
+ local changes
9
+ changes=$(pscode __complete changes 2>/dev/null | cut -f1)
10
+ COMPREPLY=($(compgen -W "$changes" -- "$cur"))
11
+ }
12
+
13
+ _pscode_complete_specs() {
14
+ local specs
15
+ specs=$(pscode __complete specs 2>/dev/null | cut -f1)
16
+ COMPREPLY=($(compgen -W "$specs" -- "$cur"))
17
+ }
18
+
19
+ _pscode_complete_items() {
20
+ local items
21
+ items=$(pscode __complete changes 2>/dev/null | cut -f1; pscode __complete specs 2>/dev/null | cut -f1)
22
+ COMPREPLY=($(compgen -W "$items" -- "$cur"))
23
+ }
24
+
25
+ _pscode_complete_schemas() {
26
+ local schemas
27
+ schemas=$(pscode __complete schemas 2>/dev/null | cut -f1)
28
+ COMPREPLY=($(compgen -W "$schemas" -- "$cur"))
29
29
  }`;
30
30
  //# sourceMappingURL=bash-templates.js.map
@@ -2,44 +2,44 @@
2
2
  * Static template strings for Fish completion scripts.
3
3
  * These are Fish-specific helper functions that never change.
4
4
  */
5
- export const FISH_STATIC_HELPERS = `# Helper function to check if a subcommand is present
6
- function __fish_pscode_using_subcommand
7
- set -l cmd (commandline -opc)
8
- set -e cmd[1]
9
- for i in $argv
10
- if contains -- $i $cmd
11
- return 0
12
- end
13
- end
14
- return 1
15
- end
16
-
17
- function __fish_pscode_no_subcommand
18
- set -l cmd (commandline -opc)
19
- test (count $cmd) -eq 1
5
+ export const FISH_STATIC_HELPERS = `# Helper function to check if a subcommand is present
6
+ function __fish_pscode_using_subcommand
7
+ set -l cmd (commandline -opc)
8
+ set -e cmd[1]
9
+ for i in $argv
10
+ if contains -- $i $cmd
11
+ return 0
12
+ end
13
+ end
14
+ return 1
15
+ end
16
+
17
+ function __fish_pscode_no_subcommand
18
+ set -l cmd (commandline -opc)
19
+ test (count $cmd) -eq 1
20
20
  end`;
21
- export const FISH_DYNAMIC_HELPERS = `# Dynamic completion helpers
22
-
23
- function __fish_pscode_changes
24
- pscode __complete changes 2>/dev/null | while read -l id desc
25
- printf '%s\\t%s\\n' "$id" "$desc"
26
- end
27
- end
28
-
29
- function __fish_pscode_specs
30
- pscode __complete specs 2>/dev/null | while read -l id desc
31
- printf '%s\\t%s\\n' "$id" "$desc"
32
- end
33
- end
34
-
35
- function __fish_pscode_items
36
- __fish_pscode_changes
37
- __fish_pscode_specs
38
- end
39
-
40
- function __fish_pscode_schemas
41
- pscode __complete schemas 2>/dev/null | while read -l id desc
42
- printf '%s\\t%s\\n' "$id" "$desc"
43
- end
21
+ export const FISH_DYNAMIC_HELPERS = `# Dynamic completion helpers
22
+
23
+ function __fish_pscode_changes
24
+ pscode __complete changes 2>/dev/null | while read -l id desc
25
+ printf '%s\\t%s\\n' "$id" "$desc"
26
+ end
27
+ end
28
+
29
+ function __fish_pscode_specs
30
+ pscode __complete specs 2>/dev/null | while read -l id desc
31
+ printf '%s\\t%s\\n' "$id" "$desc"
32
+ end
33
+ end
34
+
35
+ function __fish_pscode_items
36
+ __fish_pscode_changes
37
+ __fish_pscode_specs
38
+ end
39
+
40
+ function __fish_pscode_schemas
41
+ pscode __complete schemas 2>/dev/null | while read -l id desc
42
+ printf '%s\\t%s\\n' "$id" "$desc"
43
+ end
44
44
  end`;
45
45
  //# sourceMappingURL=fish-templates.js.map
@@ -2,33 +2,33 @@
2
2
  * Static template strings for PowerShell completion scripts.
3
3
  * These are PowerShell-specific helper functions that never change.
4
4
  */
5
- export const POWERSHELL_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
-
7
- function Get-PscodeChanges {
8
- $output = pscode __complete changes 2>$null
9
- if ($output) {
10
- $output | ForEach-Object {
11
- ($_ -split "\\t")[0]
12
- }
13
- }
14
- }
15
-
16
- function Get-PscodeSpecs {
17
- $output = pscode __complete specs 2>$null
18
- if ($output) {
19
- $output | ForEach-Object {
20
- ($_ -split "\\t")[0]
21
- }
22
- }
23
- }
24
-
25
- function Get-PscodeSchemas {
26
- $output = pscode __complete schemas 2>$null
27
- if ($output) {
28
- $output | ForEach-Object {
29
- ($_ -split "\\t")[0]
30
- }
31
- }
32
- }
5
+ export const POWERSHELL_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
+
7
+ function Get-PscodeChanges {
8
+ $output = pscode __complete changes 2>$null
9
+ if ($output) {
10
+ $output | ForEach-Object {
11
+ ($_ -split "\\t")[0]
12
+ }
13
+ }
14
+ }
15
+
16
+ function Get-PscodeSpecs {
17
+ $output = pscode __complete specs 2>$null
18
+ if ($output) {
19
+ $output | ForEach-Object {
20
+ ($_ -split "\\t")[0]
21
+ }
22
+ }
23
+ }
24
+
25
+ function Get-PscodeSchemas {
26
+ $output = pscode __complete schemas 2>$null
27
+ if ($output) {
28
+ $output | ForEach-Object {
29
+ ($_ -split "\\t")[0]
30
+ }
31
+ }
32
+ }
33
33
  `;
34
34
  //# sourceMappingURL=powershell-templates.js.map
@@ -2,44 +2,44 @@
2
2
  * Static template strings for Zsh completion scripts.
3
3
  * These are Zsh-specific helper functions that never change.
4
4
  */
5
- export const ZSH_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
-
7
- # Use pscode __complete to get available changes
8
- _pscode_complete_changes() {
9
- local -a changes
10
- while IFS=$'\\t' read -r id desc; do
11
- changes+=("$id:$desc")
12
- done < <(pscode __complete changes 2>/dev/null)
13
- _describe "change" changes
14
- }
15
-
16
- # Use pscode __complete to get available specs
17
- _pscode_complete_specs() {
18
- local -a specs
19
- while IFS=$'\\t' read -r id desc; do
20
- specs+=("$id:$desc")
21
- done < <(pscode __complete specs 2>/dev/null)
22
- _describe "spec" specs
23
- }
24
-
25
- # Get both changes and specs
26
- _pscode_complete_items() {
27
- local -a items
28
- while IFS=$'\\t' read -r id desc; do
29
- items+=("$id:$desc")
30
- done < <(pscode __complete changes 2>/dev/null)
31
- while IFS=$'\\t' read -r id desc; do
32
- items+=("$id:$desc")
33
- done < <(pscode __complete specs 2>/dev/null)
34
- _describe "item" items
35
- }
36
-
37
- # Use pscode __complete to get available schemas
38
- _pscode_complete_schemas() {
39
- local -a schemas
40
- while IFS=$'\\t' read -r id desc; do
41
- schemas+=("$id:$desc")
42
- done < <(pscode __complete schemas 2>/dev/null)
43
- _describe "schema" schemas
5
+ export const ZSH_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
+
7
+ # Use pscode __complete to get available changes
8
+ _pscode_complete_changes() {
9
+ local -a changes
10
+ while IFS=$'\\t' read -r id desc; do
11
+ changes+=("$id:$desc")
12
+ done < <(pscode __complete changes 2>/dev/null)
13
+ _describe "change" changes
14
+ }
15
+
16
+ # Use pscode __complete to get available specs
17
+ _pscode_complete_specs() {
18
+ local -a specs
19
+ while IFS=$'\\t' read -r id desc; do
20
+ specs+=("$id:$desc")
21
+ done < <(pscode __complete specs 2>/dev/null)
22
+ _describe "spec" specs
23
+ }
24
+
25
+ # Get both changes and specs
26
+ _pscode_complete_items() {
27
+ local -a items
28
+ while IFS=$'\\t' read -r id desc; do
29
+ items+=("$id:$desc")
30
+ done < <(pscode __complete changes 2>/dev/null)
31
+ while IFS=$'\\t' read -r id desc; do
32
+ items+=("$id:$desc")
33
+ done < <(pscode __complete specs 2>/dev/null)
34
+ _describe "item" items
35
+ }
36
+
37
+ # Use pscode __complete to get available schemas
38
+ _pscode_complete_schemas() {
39
+ local -a schemas
40
+ while IFS=$'\\t' read -r id desc; do
41
+ schemas+=("$id:$desc")
42
+ done < <(pscode __complete schemas 2>/dev/null)
43
+ _describe "schema" schemas
44
44
  }`;
45
45
  //# sourceMappingURL=zsh-templates.js.map
@@ -14,7 +14,7 @@ export interface ProfileDefinition {
14
14
  export declare const PROFILES: {
15
15
  readonly standard: {
16
16
  readonly description: "Padrão — propose, explore, apply, complete";
17
- readonly workflows: readonly ["propose", "explore", "apply", "complete"];
17
+ readonly workflows: readonly ["propose", "explore", "apply", "complete", "trello-setup", "draft"];
18
18
  };
19
19
  readonly dixi: {
20
20
  readonly description: "Dixi — RFC→Design→Tasks→Apply com guardrails para Java/Spring e React/Next.js";
@@ -29,7 +29,7 @@ export const ALL_WORKFLOWS = [
29
29
  export const PROFILES = {
30
30
  standard: {
31
31
  description: 'Padrão — propose, explore, apply, complete',
32
- workflows: ['propose', 'explore', 'apply', 'complete'],
32
+ workflows: ['propose', 'explore', 'apply', 'complete', 'trello-setup', 'draft'],
33
33
  },
34
34
  dixi: {
35
35
  description: 'Dixi — RFC→Design→Tasks→Apply com guardrails para Java/Spring e React/Next.js',