ganbatte-os 0.2.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/AGENTS.md +46 -0
- package/CLAUDE.md +31 -0
- package/GEMINI.md +17 -0
- package/LICENSE +21 -0
- package/README.md +141 -0
- package/agents/profiles/architect.md +13 -0
- package/agents/profiles/dev.md +13 -0
- package/agents/profiles/devops.md +12 -0
- package/agents/profiles/ganbatte-os-master.md +444 -0
- package/agents/profiles/index.json +14 -0
- package/agents/profiles/po.md +7 -0
- package/agents/profiles/qa.md +456 -0
- package/agents/profiles/sm.md +7 -0
- package/agents/profiles/squad-creator.md +7 -0
- package/agents/profiles/ux-design-expert.md +14 -0
- package/config.json +15 -0
- package/docs/curation.md +60 -0
- package/docs/gos_installation_guide.md +114 -0
- package/docs/ide-compatibility.md +20 -0
- package/docs/plan/plan-git-operations.md +51 -0
- package/docs/plan-distribuicao-publica.md +360 -0
- package/docs/stacks/stack-git-operations.md +154 -0
- package/docs/toolchain-map.md +18 -0
- package/integrations/README.md +42 -0
- package/integrations/antigravity/README.md +29 -0
- package/integrations/antigravity/command-map.json +29 -0
- package/integrations/claude/README.md +35 -0
- package/integrations/claude/agent-map.json +46 -0
- package/integrations/claude/command-map.json +32 -0
- package/integrations/claude/litellm-proxy.md +93 -0
- package/integrations/claude/mcp-specifics.md +121 -0
- package/integrations/codex/README.md +29 -0
- package/integrations/codex/command-map.json +29 -0
- package/integrations/cursor/README.md +8 -0
- package/integrations/cursor/command-map.json +11 -0
- package/integrations/gemini/README.md +13 -0
- package/integrations/gemini/command-map.json +11 -0
- package/integrations/kilo-code/README.md +7 -0
- package/integrations/kilo-code/command-map.json +11 -0
- package/integrations/opencode/README.md +91 -0
- package/integrations/opencode/command-map.json +46 -0
- package/integrations/registry.json +20 -0
- package/manifests/g-os-runtime-manifest.json +39 -0
- package/manifests/gos-install-manifest.json +46 -0
- package/opencode.json +7 -0
- package/package.json +51 -0
- package/playbooks/feature-development-playbook.md +239 -0
- package/playbooks/sprint-planner-playbook.md +127 -0
- package/playbooks/squad-pipeline-runner.md +196 -0
- package/playbooks/ssh-multi-account-setup.md +185 -0
- package/prompts/01-search.md +18 -0
- package/prompts/02-spec.md +19 -0
- package/prompts/03-tasks.md +15 -0
- package/prompts/04-code.md +10 -0
- package/prompts/05-reviews.md +11 -0
- package/rules/plan-mode.md +60 -0
- package/scripts/cli/gos-cli.js +679 -0
- package/scripts/hooks/pre-commit-validate.js +201 -0
- package/scripts/integrations/check-ide-compat.js +44 -0
- package/scripts/integrations/setup-ide-adapters.js +87 -0
- package/scripts/tools/clickup-preprocess.js +218 -0
- package/scripts/tools/clickup.js +1058 -0
- package/skills/agent-teams/SKILL.md +78 -0
- package/skills/agent-teams/presets/team-all.yaml +14 -0
- package/skills/agent-teams/presets/team-fullstack.yaml +17 -0
- package/skills/agent-teams/presets/team-ide-minimal.yaml +9 -0
- package/skills/agent-teams/presets/team-no-ui.yaml +12 -0
- package/skills/agent-teams/presets/team-qa-focused.yaml +83 -0
- package/skills/clickup/SKILL.md +151 -0
- package/skills/component-dedup/SKILL.md +101 -0
- package/skills/design-to-code/SKILL.md +255 -0
- package/skills/figma-implement-design/SKILL.md +227 -0
- package/skills/figma-make-analyzer/SKILL.md +140 -0
- package/skills/frontend-dev/SKILL.md +271 -0
- package/skills/git-ssh-setup/SKILL.md +164 -0
- package/skills/interface-design/SKILL.md +350 -0
- package/skills/interface-design/references/audit.md +76 -0
- package/skills/interface-design/references/craft-examples.md +134 -0
- package/skills/interface-design/references/critique.md +92 -0
- package/skills/interface-design/references/extract.md +92 -0
- package/skills/interface-design/references/principles.md +348 -0
- package/skills/interface-design/references/templates/system-precision.md +73 -0
- package/skills/interface-design/references/templates/system-warmth.md +67 -0
- package/skills/interface-design/references/validation.md +137 -0
- package/skills/make-code-triage/SKILL.md +135 -0
- package/skills/make-version-diff/SKILL.md +87 -0
- package/skills/plan-to-tasks/SKILL.md +136 -0
- package/skills/react-best-practices/AGENTS.md +2975 -0
- package/skills/react-best-practices/SKILL.md +151 -0
- package/skills/react-best-practices/metadata.json +15 -0
- package/skills/react-best-practices/rules/_sections.md +46 -0
- package/skills/react-best-practices/rules/_template.md +28 -0
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/react-doctor/SKILL.md +74 -0
- package/skills/registry.json +21 -0
- package/skills/sprint-planner/SKILL.md +434 -0
- package/squads/design-delivery/README.md +10 -0
- package/squads/design-delivery/squad.yaml +30 -0
- package/squads/design-delivery/workflows/wf-design-delivery.yaml +27 -0
- package/squads/design-squad/README.md +31 -0
- package/squads/design-squad/agents/brad-frost.md +185 -0
- package/squads/design-squad/agents/dan-mall.md +178 -0
- package/squads/design-squad/agents/dave-malouf.md +198 -0
- package/squads/design-squad/agents/design-chief.md +109 -0
- package/squads/design-squad/agents/design-system-architect.md +109 -0
- package/squads/design-squad/agents/ui-engineer.md +102 -0
- package/squads/design-squad/agents/ux-designer.md +105 -0
- package/squads/design-squad/agents/visual-generator.md +108 -0
- package/squads/design-squad/checklists/output-quality.md +76 -0
- package/squads/design-squad/config/config.yaml +65 -0
- package/squads/design-squad/data/design-patterns-catalog.yaml +276 -0
- package/squads/design-squad/data/routing-catalog.yaml +95 -0
- package/squads/design-squad/squad.yaml +88 -0
- package/squads/design-squad/tasks/audit-design.md +174 -0
- package/squads/design-squad/tasks/create-component-spec.md +185 -0
- package/squads/design-squad/tasks/create-design-system.md +179 -0
- package/squads/design-squad/tasks/design-ux-flow.md +184 -0
- package/squads/design-squad/tasks/diagnose.md +138 -0
- package/squads/design-squad/tasks/generate-handoff.md +186 -0
- package/squads/design-squad/tasks/review.md +133 -0
- package/squads/design-squad/tasks/setup-design-ops.md +177 -0
- package/squads/design-squad/workflows/wf-design-system-creation.yaml +131 -0
- package/squads/design-squad/workflows/wf-feature-design.yaml +114 -0
- package/squads/git-operations/README.md +30 -0
- package/squads/git-operations/squad.yaml +27 -0
- package/squads/git-operations/workflows/wf-safe-commit.yaml +27 -0
- package/squads/git-operations/workflows/wf-ssh-setup.yaml +27 -0
- package/squads/sprint-planning/agents/sprint-chief.md +47 -0
- package/squads/sprint-planning/agents/sprint-planner-agent.md +43 -0
- package/squads/sprint-planning/agents/sprint-tracker.md +43 -0
- package/squads/sprint-planning/agents/task-importer.md +44 -0
- package/squads/sprint-planning/checklists/sprint-readiness.md +27 -0
- package/squads/sprint-planning/config/config.yaml +65 -0
- package/squads/sprint-planning/data/clickup-field-mapping.yaml +94 -0
- package/squads/sprint-planning/squad.yaml +52 -0
- package/squads/sprint-planning/tasks/close-sprint.md +43 -0
- package/squads/sprint-planning/tasks/create-sprint.md +42 -0
- package/squads/sprint-planning/tasks/import-tasks.md +39 -0
- package/squads/sprint-planning/tasks/sync-status.md +31 -0
- package/squads/sprint-planning/workflows/wf-sprint-creation.yaml +59 -0
- package/squads/sprint-planning/workflows/wf-sprint-sync.yaml +35 -0
- package/templates/adr-tmpl.yaml +76 -0
- package/templates/sprint-clickup.template.md +80 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# task-importer
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
agent:
|
|
5
|
+
name: Task Importer
|
|
6
|
+
id: task-importer
|
|
7
|
+
title: Task Import Specialist
|
|
8
|
+
icon: "\U0001F4E5"
|
|
9
|
+
tier: 1
|
|
10
|
+
whenToUse: >
|
|
11
|
+
Converter sprint plans (markdown/JSON) em tasks ClickUp.
|
|
12
|
+
Bulk import com subtasks, custom fields e tags.
|
|
13
|
+
|
|
14
|
+
persona:
|
|
15
|
+
role: Task Importer
|
|
16
|
+
identity: Conversor que transforma planos locais em tasks ClickUp com fidelidade
|
|
17
|
+
core_principles:
|
|
18
|
+
- Mapear campos G-OS para ClickUp (ref, points, BR, AC)
|
|
19
|
+
- Respeitar rate limits no bulk import
|
|
20
|
+
- Atualizar sprint registry com IDs criados
|
|
21
|
+
- Reportar falhas sem interromper o batch
|
|
22
|
+
|
|
23
|
+
commands:
|
|
24
|
+
- name: import-tasks
|
|
25
|
+
description: "Importar tasks de JSON para ClickUp"
|
|
26
|
+
- name: import-markdown
|
|
27
|
+
description: "Converter markdown sprint-track para JSON e importar"
|
|
28
|
+
|
|
29
|
+
dependencies:
|
|
30
|
+
tools:
|
|
31
|
+
- clickup
|
|
32
|
+
data:
|
|
33
|
+
- data/sprints/registry.json
|
|
34
|
+
- squads/sprint-planning/data/clickup-field-mapping.yaml
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Workflow
|
|
38
|
+
|
|
39
|
+
1. Receber folder_id e list_ids do sprint-planner-agent
|
|
40
|
+
2. Ler sprint plan JSON (ou converter markdown para JSON)
|
|
41
|
+
3. Executar `clickup.js sprint import --folder-id X --file plan.json`
|
|
42
|
+
4. Processar resultado: created, failed
|
|
43
|
+
5. Atualizar `data/sprints/registry.json` com task ID mapping
|
|
44
|
+
6. Reportar resultado ao sprint-chief
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Sprint Readiness Checklist
|
|
2
|
+
|
|
3
|
+
Verificar antes de criar sprint no ClickUp.
|
|
4
|
+
|
|
5
|
+
## Environment
|
|
6
|
+
- [ ] `CLICKUP_API_KEY` definido e valido
|
|
7
|
+
- [ ] `SLACK_WEBHOOK_URL` definido (opcional, para notificacoes)
|
|
8
|
+
- [ ] ClickUp Space ID conhecido
|
|
9
|
+
|
|
10
|
+
## Sprint Plan
|
|
11
|
+
- [ ] Sprint plan JSON/markdown existe e esta completo
|
|
12
|
+
- [ ] Todos tasks tem ID unico (T-NNN)
|
|
13
|
+
- [ ] Todos tasks tem prioridade (P0/P1/P2)
|
|
14
|
+
- [ ] Tasks atribuidos a tracks (backend/frontend/qa/devops)
|
|
15
|
+
- [ ] Dependencias documentadas (sem circulares)
|
|
16
|
+
- [ ] Acceptance criteria definidos por sprint
|
|
17
|
+
- [ ] Business rules referenciadas
|
|
18
|
+
|
|
19
|
+
## ClickUp Space
|
|
20
|
+
- [ ] Space existe e esta acessivel
|
|
21
|
+
- [ ] Custom fields criados (se necessario): gos_ref, sprint_points
|
|
22
|
+
- [ ] Statuses configurados: to do, in progress, in review, complete, blocked
|
|
23
|
+
|
|
24
|
+
## Team
|
|
25
|
+
- [ ] Responsaveis definidos por track
|
|
26
|
+
- [ ] Datas de inicio e fim da sprint definidas
|
|
27
|
+
- [ ] Sprint anterior fechada (se aplicavel)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
squad: sprint-planning
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
|
|
4
|
+
tiers:
|
|
5
|
+
tier0:
|
|
6
|
+
role: orchestrator
|
|
7
|
+
agent: sprint-chief
|
|
8
|
+
model_tier: sonnet
|
|
9
|
+
description: "Coordena o fluxo entre agents, decide quando escalar"
|
|
10
|
+
tier1:
|
|
11
|
+
role: specialists
|
|
12
|
+
agents:
|
|
13
|
+
- sprint-planner-agent
|
|
14
|
+
- sprint-tracker
|
|
15
|
+
- task-importer
|
|
16
|
+
model_tier: sonnet
|
|
17
|
+
description: "Especialistas em planejamento, tracking e importacao"
|
|
18
|
+
|
|
19
|
+
env_required:
|
|
20
|
+
- CLICKUP_API_KEY
|
|
21
|
+
- SLACK_WEBHOOK_URL
|
|
22
|
+
|
|
23
|
+
env_optional:
|
|
24
|
+
- CLICKUP_SPACE_ID
|
|
25
|
+
- CLICKUP_SPRINT_FOLDER_ID
|
|
26
|
+
|
|
27
|
+
tools:
|
|
28
|
+
clickup: scripts/tools/clickup.js
|
|
29
|
+
slack: scripts/tools/slack-notify.js
|
|
30
|
+
|
|
31
|
+
defaults:
|
|
32
|
+
sprint_duration_days: 7
|
|
33
|
+
tracks: [backend, frontend]
|
|
34
|
+
status_mapping:
|
|
35
|
+
todo: "to do"
|
|
36
|
+
in_progress: "in progress"
|
|
37
|
+
review: "in review"
|
|
38
|
+
done: "complete"
|
|
39
|
+
blocked: "blocked"
|
|
40
|
+
|
|
41
|
+
handoffs:
|
|
42
|
+
sprint_chief_to_planner:
|
|
43
|
+
from: sprint-chief
|
|
44
|
+
to: sprint-planner-agent
|
|
45
|
+
trigger: "sprint plan validated"
|
|
46
|
+
context: [sprint_plan, space_id]
|
|
47
|
+
planner_to_importer:
|
|
48
|
+
from: sprint-planner-agent
|
|
49
|
+
to: task-importer
|
|
50
|
+
trigger: "sprint created in ClickUp"
|
|
51
|
+
context: [folder_id, list_ids, tasks_json]
|
|
52
|
+
importer_to_tracker:
|
|
53
|
+
from: task-importer
|
|
54
|
+
to: sprint-tracker
|
|
55
|
+
trigger: "tasks imported"
|
|
56
|
+
context: [folder_id, task_map]
|
|
57
|
+
|
|
58
|
+
cross_cutting:
|
|
59
|
+
notifications:
|
|
60
|
+
slack_on_sprint_create: true
|
|
61
|
+
slack_on_import_complete: true
|
|
62
|
+
slack_on_sprint_close: true
|
|
63
|
+
registry:
|
|
64
|
+
path: data/sprints/registry.json
|
|
65
|
+
auto_update: true
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# ClickUp Custom Field Mapping
|
|
2
|
+
# Maps G-OS task fields to ClickUp custom fields
|
|
3
|
+
# field_id values must be configured per workspace (discovered via `clickup.js field list`)
|
|
4
|
+
|
|
5
|
+
version: "1.0"
|
|
6
|
+
|
|
7
|
+
fields:
|
|
8
|
+
gos_ref:
|
|
9
|
+
description: "Reference code (M/F/B) from spec"
|
|
10
|
+
clickup_type: short_text
|
|
11
|
+
gos_source: ref
|
|
12
|
+
field_id: "" # Set per workspace
|
|
13
|
+
|
|
14
|
+
sprint_points:
|
|
15
|
+
description: "Story points / sprint points"
|
|
16
|
+
clickup_type: number
|
|
17
|
+
gos_source: points
|
|
18
|
+
field_id: ""
|
|
19
|
+
|
|
20
|
+
business_rules:
|
|
21
|
+
description: "Business rules (BR-NNN)"
|
|
22
|
+
clickup_type: text
|
|
23
|
+
gos_source: businessRules
|
|
24
|
+
field_id: ""
|
|
25
|
+
|
|
26
|
+
track:
|
|
27
|
+
description: "Development track"
|
|
28
|
+
clickup_type: drop_down
|
|
29
|
+
gos_source: area
|
|
30
|
+
options: [backend, frontend, qa, devops, general]
|
|
31
|
+
field_id: ""
|
|
32
|
+
|
|
33
|
+
acceptance_criteria:
|
|
34
|
+
description: "Acceptance criteria"
|
|
35
|
+
clickup_type: text
|
|
36
|
+
gos_source: acceptanceCriteria
|
|
37
|
+
field_id: ""
|
|
38
|
+
|
|
39
|
+
depends_on:
|
|
40
|
+
description: "Task dependencies (T-NNN list)"
|
|
41
|
+
clickup_type: text
|
|
42
|
+
gos_source: dependencies
|
|
43
|
+
field_id: ""
|
|
44
|
+
|
|
45
|
+
context:
|
|
46
|
+
description: "Contexto de negócio — motivação da task para leitor não-técnico"
|
|
47
|
+
clickup_type: text
|
|
48
|
+
gos_source: context
|
|
49
|
+
mapped_to: description # Integrado na descrição rica via buildTaskDescription()
|
|
50
|
+
|
|
51
|
+
steps:
|
|
52
|
+
description: "Passo a passo de implementação (3-7 steps acionáveis)"
|
|
53
|
+
clickup_type: checklist
|
|
54
|
+
gos_source: steps
|
|
55
|
+
mapped_to: "checklist:Implementation Steps" # Vira checklist automaticamente
|
|
56
|
+
|
|
57
|
+
technical_notes:
|
|
58
|
+
description: "Notas técnicas, decisões de arquitetura, caveats"
|
|
59
|
+
clickup_type: text
|
|
60
|
+
gos_source: technicalNotes
|
|
61
|
+
mapped_to: description # Integrado na descrição rica
|
|
62
|
+
|
|
63
|
+
estimated_hours:
|
|
64
|
+
description: "Estimativa em horas (0.5-16)"
|
|
65
|
+
clickup_type: number
|
|
66
|
+
gos_source: estimatedHours
|
|
67
|
+
mapped_to: time_estimate # Convertido para milissegundos no import
|
|
68
|
+
|
|
69
|
+
dod:
|
|
70
|
+
description: "Definition of Done — como verificar que está pronto"
|
|
71
|
+
clickup_type: text
|
|
72
|
+
gos_source: dod
|
|
73
|
+
mapped_to: description # Integrado na descrição rica
|
|
74
|
+
|
|
75
|
+
tag_conventions:
|
|
76
|
+
sprint_id: "sprint:{SPRINT_ID}" # e.g. sprint:S01
|
|
77
|
+
sprint_status: "sprint-status:{STATUS}" # e.g. sprint-status:active
|
|
78
|
+
track: "track:{TRACK}" # e.g. track:backend
|
|
79
|
+
task_id: "{TASK_ID}" # e.g. T-001
|
|
80
|
+
|
|
81
|
+
status_mapping:
|
|
82
|
+
gos_to_clickup:
|
|
83
|
+
todo: "to do"
|
|
84
|
+
in-progress: "in progress"
|
|
85
|
+
review: "in review"
|
|
86
|
+
done: "complete"
|
|
87
|
+
blocked: "blocked"
|
|
88
|
+
clickup_to_gos:
|
|
89
|
+
"to do": todo
|
|
90
|
+
"in progress": in-progress
|
|
91
|
+
"in review": review
|
|
92
|
+
"complete": done
|
|
93
|
+
"closed": done
|
|
94
|
+
"blocked": blocked
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: sprint-planning
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
short-title: "Sprint Planning Squad"
|
|
4
|
+
description: "Orquestra o ciclo de vida de sprints no ClickUp: planejamento, criacao, importacao de tasks, tracking de status e fechamento. Usa Folders como containers de sprint e Lists como tracks (backend/frontend)."
|
|
5
|
+
author: "Synkra AIOS"
|
|
6
|
+
license: MIT
|
|
7
|
+
slashPrefix: "sprint-squad"
|
|
8
|
+
|
|
9
|
+
aios:
|
|
10
|
+
minVersion: "4.0.0"
|
|
11
|
+
type: squad
|
|
12
|
+
|
|
13
|
+
tags:
|
|
14
|
+
- sprint
|
|
15
|
+
- clickup
|
|
16
|
+
- agile
|
|
17
|
+
- task-management
|
|
18
|
+
- scrum
|
|
19
|
+
- project-management
|
|
20
|
+
|
|
21
|
+
components:
|
|
22
|
+
agents:
|
|
23
|
+
# Tier 0 — Orchestrator
|
|
24
|
+
- sprint-chief.md
|
|
25
|
+
# Tier 1 — Specialists
|
|
26
|
+
- sprint-planner-agent.md
|
|
27
|
+
- sprint-tracker.md
|
|
28
|
+
- task-importer.md
|
|
29
|
+
tasks:
|
|
30
|
+
- create-sprint.md
|
|
31
|
+
- import-tasks.md
|
|
32
|
+
- sync-status.md
|
|
33
|
+
- close-sprint.md
|
|
34
|
+
workflows:
|
|
35
|
+
- wf-sprint-creation.yaml
|
|
36
|
+
- wf-sprint-sync.yaml
|
|
37
|
+
checklists:
|
|
38
|
+
- sprint-readiness.md
|
|
39
|
+
|
|
40
|
+
routing_matrix:
|
|
41
|
+
sprint_creation:
|
|
42
|
+
primary: sprint-planner-agent
|
|
43
|
+
triggers: ["create sprint", "new sprint", "plan sprint", "criar sprint"]
|
|
44
|
+
sprint_tracking:
|
|
45
|
+
primary: sprint-tracker
|
|
46
|
+
triggers: ["sprint status", "burndown", "track progress", "status da sprint"]
|
|
47
|
+
task_import:
|
|
48
|
+
primary: task-importer
|
|
49
|
+
triggers: ["import tasks", "sync to clickup", "push tasks", "importar tasks"]
|
|
50
|
+
sprint_close:
|
|
51
|
+
primary: sprint-chief
|
|
52
|
+
triggers: ["close sprint", "sprint review", "fechar sprint", "retrospective"]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Task: Close Sprint
|
|
2
|
+
|
|
3
|
+
## Objetivo
|
|
4
|
+
Fechar sprint, tratar tasks incompletas (spillover) e gerar retrospective.
|
|
5
|
+
|
|
6
|
+
## Steps
|
|
7
|
+
|
|
8
|
+
1. **Get final status**
|
|
9
|
+
```bash
|
|
10
|
+
node scripts/tools/clickup.js sprint status --folder-id <FOLDER_ID>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. **Identify incomplete tasks**
|
|
14
|
+
Filtrar tasks com status != done/complete.
|
|
15
|
+
|
|
16
|
+
3. **Spillover decision**
|
|
17
|
+
Perguntar ao usuario:
|
|
18
|
+
- Mover tasks incompletas para proxima sprint?
|
|
19
|
+
- Cancelar tasks incompletas?
|
|
20
|
+
- Manter no folder atual?
|
|
21
|
+
|
|
22
|
+
4. **Execute spillover** (se aplicavel)
|
|
23
|
+
Para cada task incompleta, mover para novo folder:
|
|
24
|
+
```bash
|
|
25
|
+
node scripts/tools/clickup.js task update --task-id <ID> --status "to do"
|
|
26
|
+
# Nota: mover entre lists requer API de task move (PUT /task/{id} com list)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
5. **Tag sprint as closed**
|
|
30
|
+
```bash
|
|
31
|
+
node scripts/tools/clickup.js tag add --task-id <FOLDER_FIRST_TASK> --tag "sprint-closed"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
6. **Notify Slack**
|
|
35
|
+
```bash
|
|
36
|
+
node scripts/tools/slack-notify.js send \
|
|
37
|
+
--text "*:checkered_flag: Sprint <SPRINT_ID> encerrada!*\n>*Concluidas:* N/M (X%)\n>*Spillover:* N tasks para <NEXT_SPRINT>"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Output
|
|
41
|
+
- Sprint encerrada
|
|
42
|
+
- Tasks spillover tratadas
|
|
43
|
+
- Retrospective summary no Slack
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Task: Create Sprint
|
|
2
|
+
|
|
3
|
+
## Objetivo
|
|
4
|
+
Criar sprint no ClickUp a partir de um plano validado.
|
|
5
|
+
|
|
6
|
+
## Pre-requisitos
|
|
7
|
+
- [ ] `CLICKUP_API_KEY` definido
|
|
8
|
+
- [ ] Space ID conhecido
|
|
9
|
+
- [ ] Sprint plan validado contra schema
|
|
10
|
+
|
|
11
|
+
## Steps
|
|
12
|
+
|
|
13
|
+
1. **Validate plan**
|
|
14
|
+
```bash
|
|
15
|
+
# Verificar que JSON e valido
|
|
16
|
+
node -e "JSON.parse(require('fs').readFileSync('sprint-plan.json','utf-8')); console.log('OK')"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
2. **Create sprint folder + lists**
|
|
20
|
+
```bash
|
|
21
|
+
node scripts/tools/clickup.js sprint create \
|
|
22
|
+
--space-id <SPACE_ID> \
|
|
23
|
+
--name "<SPRINT_NAME>" \
|
|
24
|
+
--start <YYYY-MM-DD> \
|
|
25
|
+
--end <YYYY-MM-DD> \
|
|
26
|
+
--tracks backend,frontend \
|
|
27
|
+
--id <SPRINT_ID>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
3. **Save folder ID to registry**
|
|
31
|
+
Atualizar `data/sprints/registry.json` com o folder_id e list_ids retornados.
|
|
32
|
+
|
|
33
|
+
4. **Notify Slack**
|
|
34
|
+
```bash
|
|
35
|
+
node scripts/tools/slack-notify.js send \
|
|
36
|
+
--text "*:rocket: Sprint <SPRINT_ID> criada!*\n>*Nome:* <SPRINT_NAME>\n>*Periodo:* <START> to <END>\n>*Tracks:* backend, frontend"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Output
|
|
40
|
+
- folder_id, list_ids para handoff ao task-importer
|
|
41
|
+
- Registry atualizado
|
|
42
|
+
- Notificacao Slack enviada
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Task: Import Tasks
|
|
2
|
+
|
|
3
|
+
## Objetivo
|
|
4
|
+
Importar tasks de um sprint plan JSON para o ClickUp em batch.
|
|
5
|
+
|
|
6
|
+
## Pre-requisitos
|
|
7
|
+
- [ ] Sprint criada (folder_id e list_ids disponiveis)
|
|
8
|
+
- [ ] Sprint plan JSON segue schema `data/schemas/sprint-clickup.schema.json`
|
|
9
|
+
- [ ] `CLICKUP_API_KEY` definido
|
|
10
|
+
|
|
11
|
+
## Steps
|
|
12
|
+
|
|
13
|
+
1. **Import tasks**
|
|
14
|
+
```bash
|
|
15
|
+
node scripts/tools/clickup.js sprint import \
|
|
16
|
+
--folder-id <FOLDER_ID> \
|
|
17
|
+
--file sprint-plan.json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. **Process results**
|
|
21
|
+
- Verificar `imported` vs `failed` counts
|
|
22
|
+
- Se `failed > 0`, investigar errors no output
|
|
23
|
+
|
|
24
|
+
3. **Update registry**
|
|
25
|
+
Atualizar `data/sprints/registry.json` com mapping:
|
|
26
|
+
```json
|
|
27
|
+
{ "taskMap": { "T-001": "clickup_id_1", "T-002": "clickup_id_2" } }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
4. **Notify Slack**
|
|
31
|
+
```bash
|
|
32
|
+
node scripts/tools/slack-notify.js send \
|
|
33
|
+
--text "*:package: Tasks importadas!*\n>*Sprint:* <SPRINT_ID>\n>*Importadas:* N tasks\n>*Falhas:* N"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Output
|
|
37
|
+
- Task map (local ID -> ClickUp ID)
|
|
38
|
+
- Registry atualizado
|
|
39
|
+
- Slack notificado
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Task: Sync Status
|
|
2
|
+
|
|
3
|
+
## Objetivo
|
|
4
|
+
Consultar status da sprint no ClickUp e gerar report.
|
|
5
|
+
|
|
6
|
+
## Steps
|
|
7
|
+
|
|
8
|
+
1. **Get sprint status**
|
|
9
|
+
```bash
|
|
10
|
+
node scripts/tools/clickup.js sprint status --folder-id <FOLDER_ID>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. **Save status JSON**
|
|
14
|
+
Salvar output em arquivo temporario para o Slack notifier.
|
|
15
|
+
|
|
16
|
+
3. **Notify Slack**
|
|
17
|
+
```bash
|
|
18
|
+
node scripts/tools/slack-notify.js sprint-summary --file sprint-status.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
4. **Alert on blockers**
|
|
22
|
+
Se `blocked > 0`, adicionar alerta:
|
|
23
|
+
```bash
|
|
24
|
+
node scripts/tools/slack-notify.js send \
|
|
25
|
+
--text ":warning: *<BLOCKED_COUNT> tasks bloqueadas na sprint <SPRINT_ID>!*"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Output
|
|
29
|
+
- Sprint status JSON
|
|
30
|
+
- Slack summary enviado
|
|
31
|
+
- Alerta de blockers se necessario
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
workflow:
|
|
2
|
+
id: wf-sprint-creation
|
|
3
|
+
name: "Sprint Creation Pipeline"
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: >
|
|
6
|
+
End-to-end sprint creation: from planning artifacts to ClickUp workspace.
|
|
7
|
+
Reads sprint plan, validates structure, creates ClickUp folder/lists,
|
|
8
|
+
imports tasks, sets custom fields, and produces sprint overview.
|
|
9
|
+
trigger: "*sprint-create"
|
|
10
|
+
entry_agent: sprint-chief
|
|
11
|
+
type: sequential
|
|
12
|
+
|
|
13
|
+
phases:
|
|
14
|
+
- id: phase_0
|
|
15
|
+
name: "Pre-flight Check"
|
|
16
|
+
agent: sprint-chief
|
|
17
|
+
description: "Verify env vars, space ID, and sprint plan availability."
|
|
18
|
+
checkpoint:
|
|
19
|
+
gate: "CLICKUP_API_KEY set, space ID known, plan file exists"
|
|
20
|
+
veto: "Missing env vars or plan file"
|
|
21
|
+
|
|
22
|
+
- id: phase_1
|
|
23
|
+
name: "Plan Validation"
|
|
24
|
+
agent: sprint-planner-agent
|
|
25
|
+
task: create-sprint.md
|
|
26
|
+
depends_on: [phase_0]
|
|
27
|
+
description: "Validate sprint plan JSON against schema, check IDs and priorities."
|
|
28
|
+
checkpoint:
|
|
29
|
+
gate: "Schema validates, all tasks have unique IDs and priorities"
|
|
30
|
+
veto: "Schema validation failed or circular dependencies detected"
|
|
31
|
+
|
|
32
|
+
- id: phase_2
|
|
33
|
+
name: "ClickUp Sprint Setup"
|
|
34
|
+
agent: sprint-planner-agent
|
|
35
|
+
task: create-sprint.md
|
|
36
|
+
depends_on: [phase_1]
|
|
37
|
+
description: "Create ClickUp folder (sprint container) and lists (tracks)."
|
|
38
|
+
checkpoint:
|
|
39
|
+
gate: "Folder and all lists created, IDs captured"
|
|
40
|
+
veto: "API auth failure or space not found"
|
|
41
|
+
|
|
42
|
+
- id: phase_3
|
|
43
|
+
name: "Task Import"
|
|
44
|
+
agent: task-importer
|
|
45
|
+
task: import-tasks.md
|
|
46
|
+
depends_on: [phase_2]
|
|
47
|
+
description: "Bulk create tasks in ClickUp lists, set fields, add tags."
|
|
48
|
+
checkpoint:
|
|
49
|
+
gate: "All tasks created, IDs mapped back to local plan"
|
|
50
|
+
veto: "Rate limit exceeded or task creation failures > 10%"
|
|
51
|
+
|
|
52
|
+
- id: phase_4
|
|
53
|
+
name: "Status Sync & Notification"
|
|
54
|
+
agent: sprint-tracker
|
|
55
|
+
task: sync-status.md
|
|
56
|
+
depends_on: [phase_3]
|
|
57
|
+
description: "Read back sprint status, generate overview, notify Slack."
|
|
58
|
+
checkpoint:
|
|
59
|
+
gate: "Sprint overview generated, Slack notified"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
workflow:
|
|
2
|
+
id: wf-sprint-sync
|
|
3
|
+
name: "Sprint Bidirectional Sync"
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: >
|
|
6
|
+
Sync sprint status between ClickUp and local files.
|
|
7
|
+
Pulls remote state, diffs against local, applies changes.
|
|
8
|
+
trigger: "*sprint-sync"
|
|
9
|
+
entry_agent: sprint-chief
|
|
10
|
+
type: sequential
|
|
11
|
+
|
|
12
|
+
phases:
|
|
13
|
+
- id: phase_0
|
|
14
|
+
name: "Pull Remote State"
|
|
15
|
+
agent: sprint-tracker
|
|
16
|
+
task: sync-status.md
|
|
17
|
+
description: "Fetch current sprint status from ClickUp."
|
|
18
|
+
checkpoint:
|
|
19
|
+
gate: "Remote state fetched successfully"
|
|
20
|
+
|
|
21
|
+
- id: phase_1
|
|
22
|
+
name: "Diff Local vs Remote"
|
|
23
|
+
agent: sprint-tracker
|
|
24
|
+
depends_on: [phase_0]
|
|
25
|
+
description: "Compare local task states with ClickUp states."
|
|
26
|
+
checkpoint:
|
|
27
|
+
gate: "Diff generated with change list"
|
|
28
|
+
|
|
29
|
+
- id: phase_2
|
|
30
|
+
name: "Apply Changes"
|
|
31
|
+
agent: sprint-chief
|
|
32
|
+
depends_on: [phase_1]
|
|
33
|
+
description: "Apply changes to local files or push to ClickUp."
|
|
34
|
+
checkpoint:
|
|
35
|
+
gate: "All changes applied, registry updated"
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# ADR Template — Architecture Decision Record
|
|
2
|
+
# Padrao Michael Nygard adaptado para G-OS
|
|
3
|
+
# Used by: sprint-planner, sdd (Phase 2), @architect
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
|
|
6
|
+
structure:
|
|
7
|
+
id: "ADR-{NNN}"
|
|
8
|
+
title: "{Decision Title}"
|
|
9
|
+
status: "proposed | accepted | deprecated | superseded"
|
|
10
|
+
date: "{YYYY-MM-DD}"
|
|
11
|
+
deciders: "{list of people/agents involved}"
|
|
12
|
+
context: |
|
|
13
|
+
Qual e o problema ou forca que motiva esta decisao?
|
|
14
|
+
Quais forcas estao em jogo (tecnicas, negocio, time)?
|
|
15
|
+
options:
|
|
16
|
+
- name: "{Option A}"
|
|
17
|
+
pros: ["{pro 1}", "{pro 2}"]
|
|
18
|
+
cons: ["{con 1}", "{con 2}"]
|
|
19
|
+
- name: "{Option B}"
|
|
20
|
+
pros: ["{pro 1}", "{pro 2}"]
|
|
21
|
+
cons: ["{con 1}", "{con 2}"]
|
|
22
|
+
decision: |
|
|
23
|
+
Qual opcao foi escolhida e por que?
|
|
24
|
+
Qual mudanca sera feita?
|
|
25
|
+
consequences:
|
|
26
|
+
positive: ["{consequencia positiva 1}"]
|
|
27
|
+
negative: ["{consequencia negativa 1}"]
|
|
28
|
+
neutral: ["{consequencia neutra 1}"]
|
|
29
|
+
references:
|
|
30
|
+
- "{link ou caminho de arquivo}"
|
|
31
|
+
|
|
32
|
+
# Quando usar ADR separado vs embedded no PRD:
|
|
33
|
+
# - ADR separado: 3+ opcoes com trade-offs significativos (stack, banco, auth, arquitetura)
|
|
34
|
+
# - Embedded no PRD: decisoes menores com escolha obvia (lib, naming, padrao de codigo)
|
|
35
|
+
|
|
36
|
+
markdownTemplate: |
|
|
37
|
+
# {id}: {title}
|
|
38
|
+
|
|
39
|
+
**Status:** {status}
|
|
40
|
+
**Date:** {date}
|
|
41
|
+
**Deciders:** {deciders}
|
|
42
|
+
|
|
43
|
+
## Contexto
|
|
44
|
+
|
|
45
|
+
{context}
|
|
46
|
+
|
|
47
|
+
## Opcoes Consideradas
|
|
48
|
+
|
|
49
|
+
### Opcao 1: {options[0].name}
|
|
50
|
+
- **Pros:** {options[0].pros}
|
|
51
|
+
- **Cons:** {options[0].cons}
|
|
52
|
+
|
|
53
|
+
### Opcao 2: {options[1].name}
|
|
54
|
+
- **Pros:** {options[1].pros}
|
|
55
|
+
- **Cons:** {options[1].cons}
|
|
56
|
+
|
|
57
|
+
## Decisao
|
|
58
|
+
|
|
59
|
+
{decision}
|
|
60
|
+
|
|
61
|
+
## Decision Gate (custo & risco)
|
|
62
|
+
|
|
63
|
+
- Esta decisao atende aos objetivos de negocio declarados?
|
|
64
|
+
- Respeita todas as restricoes explicitas (seguranca, compliance, stack, orcamento, time)?
|
|
65
|
+
- Cumpre os atributos de qualidade com metricas e carga-alvo (latencia/disponibilidade/throughput)?
|
|
66
|
+
- Existe alternativa mais barata ou menos arriscada que entregue os mesmos objetivos? Se sim, por que foi descartada?
|
|
67
|
+
|
|
68
|
+
## Consequencias
|
|
69
|
+
|
|
70
|
+
**Positivas:** {consequences.positive}
|
|
71
|
+
**Negativas:** {consequences.negative}
|
|
72
|
+
**Neutras:** {consequences.neutral}
|
|
73
|
+
|
|
74
|
+
## Referencias
|
|
75
|
+
|
|
76
|
+
{references}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Sprint {{SPRINT_ID}} — {{SPRINT_NAME}}
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Campo | Valor |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **Sprint** | {{SPRINT_ID}} |
|
|
8
|
+
| **Nome** | {{SPRINT_NAME}} |
|
|
9
|
+
| **Início** | {{START_DATE}} |
|
|
10
|
+
| **Fim** | {{END_DATE}} |
|
|
11
|
+
| **Duração** | {{DURATION_DAYS}} dias |
|
|
12
|
+
| **Team** | {{TEAM}} |
|
|
13
|
+
| **ClickUp Folder ID** | {{CLICKUP_FOLDER_ID}} |
|
|
14
|
+
| **ClickUp Space ID** | {{CLICKUP_SPACE_ID}} |
|
|
15
|
+
| **Status** | {{STATUS}} |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Track: Backend
|
|
20
|
+
|
|
21
|
+
**ClickUp List ID:** {{BACKEND_LIST_ID}}
|
|
22
|
+
|
|
23
|
+
| ID | Ref | Título | Escopo resumido | Points | Status | ClickUp ID |
|
|
24
|
+
|----|-----|--------|-----------------|--------|--------|-------------|
|
|
25
|
+
| T-001 | B-001 | | | 3 | todo | |
|
|
26
|
+
| T-002 | B-002 | | | 5 | todo | |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Track: Frontend
|
|
31
|
+
|
|
32
|
+
**ClickUp List ID:** {{FRONTEND_LIST_ID}}
|
|
33
|
+
|
|
34
|
+
| ID | Ref | Título | Escopo resumido | Points | Status | ClickUp ID |
|
|
35
|
+
|----|-----|--------|-----------------|--------|--------|-------------|
|
|
36
|
+
| T-020 | F-001 | | | 3 | todo | |
|
|
37
|
+
| T-021 | F-002 | | | 5 | todo | |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Business Rules
|
|
42
|
+
|
|
43
|
+
| ID | Descrição |
|
|
44
|
+
|----|-----------|
|
|
45
|
+
| BR-001 | |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Dependências (Cross-Track)
|
|
50
|
+
|
|
51
|
+
| FE Task | Depende de BE Task | Sprint FE | Sprint BE | Buffer |
|
|
52
|
+
|---------|-------------------|-----------|-----------|--------|
|
|
53
|
+
| T-020 | T-001 | Mesmo sprint | Mesmo sprint | 0 |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Acceptance Criteria do Sprint
|
|
58
|
+
|
|
59
|
+
- [ ] Todos endpoints backend retornam dados conforme Zod schema
|
|
60
|
+
- [ ] Todos componentes frontend renderizam com dados reais
|
|
61
|
+
- [ ] Testes E2E passam para fluxos críticos
|
|
62
|
+
- [ ] Coverage > 80% em módulos novos
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## API Contracts
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
GET /api/{{MODULE}} -> { items: [], total: number }
|
|
70
|
+
POST /api/{{MODULE}} -> { id: string } | 400/422
|
|
71
|
+
PUT /api/{{MODULE}}/[id] -> { updated: true } | 404
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Notas
|
|
77
|
+
|
|
78
|
+
- Gerado via `node scripts/tools/clickup.js sprint create`
|
|
79
|
+
- Template base: `templates/sprint-clickup.template.md`
|
|
80
|
+
- Schema: `data/schemas/sprint-clickup.schema.json`
|