spec-kitty-cli 0.12.1__py3-none-any.whl
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.
- spec_kitty_cli-0.12.1.dist-info/METADATA +1767 -0
- spec_kitty_cli-0.12.1.dist-info/RECORD +242 -0
- spec_kitty_cli-0.12.1.dist-info/WHEEL +4 -0
- spec_kitty_cli-0.12.1.dist-info/entry_points.txt +2 -0
- spec_kitty_cli-0.12.1.dist-info/licenses/LICENSE +21 -0
- specify_cli/__init__.py +171 -0
- specify_cli/acceptance.py +627 -0
- specify_cli/agent_utils/README.md +157 -0
- specify_cli/agent_utils/__init__.py +9 -0
- specify_cli/agent_utils/status.py +356 -0
- specify_cli/cli/__init__.py +6 -0
- specify_cli/cli/commands/__init__.py +46 -0
- specify_cli/cli/commands/accept.py +189 -0
- specify_cli/cli/commands/agent/__init__.py +22 -0
- specify_cli/cli/commands/agent/config.py +382 -0
- specify_cli/cli/commands/agent/context.py +191 -0
- specify_cli/cli/commands/agent/feature.py +1057 -0
- specify_cli/cli/commands/agent/release.py +11 -0
- specify_cli/cli/commands/agent/tasks.py +1253 -0
- specify_cli/cli/commands/agent/workflow.py +801 -0
- specify_cli/cli/commands/context.py +246 -0
- specify_cli/cli/commands/dashboard.py +85 -0
- specify_cli/cli/commands/implement.py +973 -0
- specify_cli/cli/commands/init.py +827 -0
- specify_cli/cli/commands/init_help.py +62 -0
- specify_cli/cli/commands/merge.py +755 -0
- specify_cli/cli/commands/mission.py +240 -0
- specify_cli/cli/commands/ops.py +265 -0
- specify_cli/cli/commands/orchestrate.py +640 -0
- specify_cli/cli/commands/repair.py +175 -0
- specify_cli/cli/commands/research.py +165 -0
- specify_cli/cli/commands/sync.py +364 -0
- specify_cli/cli/commands/upgrade.py +249 -0
- specify_cli/cli/commands/validate_encoding.py +186 -0
- specify_cli/cli/commands/validate_tasks.py +186 -0
- specify_cli/cli/commands/verify.py +310 -0
- specify_cli/cli/helpers.py +123 -0
- specify_cli/cli/step_tracker.py +91 -0
- specify_cli/cli/ui.py +192 -0
- specify_cli/core/__init__.py +53 -0
- specify_cli/core/agent_context.py +311 -0
- specify_cli/core/config.py +96 -0
- specify_cli/core/context_validation.py +362 -0
- specify_cli/core/dependency_graph.py +351 -0
- specify_cli/core/git_ops.py +129 -0
- specify_cli/core/multi_parent_merge.py +323 -0
- specify_cli/core/paths.py +260 -0
- specify_cli/core/project_resolver.py +110 -0
- specify_cli/core/stale_detection.py +263 -0
- specify_cli/core/tool_checker.py +79 -0
- specify_cli/core/utils.py +43 -0
- specify_cli/core/vcs/__init__.py +114 -0
- specify_cli/core/vcs/detection.py +341 -0
- specify_cli/core/vcs/exceptions.py +85 -0
- specify_cli/core/vcs/git.py +1304 -0
- specify_cli/core/vcs/jujutsu.py +1208 -0
- specify_cli/core/vcs/protocol.py +285 -0
- specify_cli/core/vcs/types.py +249 -0
- specify_cli/core/version_checker.py +261 -0
- specify_cli/core/worktree.py +506 -0
- specify_cli/dashboard/__init__.py +28 -0
- specify_cli/dashboard/diagnostics.py +204 -0
- specify_cli/dashboard/handlers/__init__.py +17 -0
- specify_cli/dashboard/handlers/api.py +143 -0
- specify_cli/dashboard/handlers/base.py +65 -0
- specify_cli/dashboard/handlers/features.py +390 -0
- specify_cli/dashboard/handlers/router.py +81 -0
- specify_cli/dashboard/handlers/static.py +50 -0
- specify_cli/dashboard/lifecycle.py +541 -0
- specify_cli/dashboard/scanner.py +437 -0
- specify_cli/dashboard/server.py +123 -0
- specify_cli/dashboard/static/dashboard/dashboard.css +722 -0
- specify_cli/dashboard/static/dashboard/dashboard.js +1424 -0
- specify_cli/dashboard/static/spec-kitty.png +0 -0
- specify_cli/dashboard/templates/__init__.py +36 -0
- specify_cli/dashboard/templates/index.html +258 -0
- specify_cli/doc_generators.py +621 -0
- specify_cli/doc_state.py +408 -0
- specify_cli/frontmatter.py +384 -0
- specify_cli/gap_analysis.py +915 -0
- specify_cli/gitignore_manager.py +300 -0
- specify_cli/guards.py +145 -0
- specify_cli/legacy_detector.py +83 -0
- specify_cli/manifest.py +286 -0
- specify_cli/merge/__init__.py +63 -0
- specify_cli/merge/executor.py +653 -0
- specify_cli/merge/forecast.py +215 -0
- specify_cli/merge/ordering.py +126 -0
- specify_cli/merge/preflight.py +230 -0
- specify_cli/merge/state.py +185 -0
- specify_cli/merge/status_resolver.py +354 -0
- specify_cli/mission.py +654 -0
- specify_cli/missions/documentation/command-templates/implement.md +309 -0
- specify_cli/missions/documentation/command-templates/plan.md +275 -0
- specify_cli/missions/documentation/command-templates/review.md +344 -0
- specify_cli/missions/documentation/command-templates/specify.md +206 -0
- specify_cli/missions/documentation/command-templates/tasks.md +189 -0
- specify_cli/missions/documentation/mission.yaml +113 -0
- specify_cli/missions/documentation/templates/divio/explanation-template.md +192 -0
- specify_cli/missions/documentation/templates/divio/howto-template.md +168 -0
- specify_cli/missions/documentation/templates/divio/reference-template.md +179 -0
- specify_cli/missions/documentation/templates/divio/tutorial-template.md +146 -0
- specify_cli/missions/documentation/templates/generators/jsdoc.json.template +18 -0
- specify_cli/missions/documentation/templates/generators/sphinx-conf.py.template +36 -0
- specify_cli/missions/documentation/templates/plan-template.md +269 -0
- specify_cli/missions/documentation/templates/release-template.md +222 -0
- specify_cli/missions/documentation/templates/spec-template.md +172 -0
- specify_cli/missions/documentation/templates/task-prompt-template.md +140 -0
- specify_cli/missions/documentation/templates/tasks-template.md +159 -0
- specify_cli/missions/research/command-templates/merge.md +388 -0
- specify_cli/missions/research/command-templates/plan.md +125 -0
- specify_cli/missions/research/command-templates/review.md +144 -0
- specify_cli/missions/research/command-templates/tasks.md +225 -0
- specify_cli/missions/research/mission.yaml +115 -0
- specify_cli/missions/research/templates/data-model-template.md +33 -0
- specify_cli/missions/research/templates/plan-template.md +161 -0
- specify_cli/missions/research/templates/research/evidence-log.csv +18 -0
- specify_cli/missions/research/templates/research/source-register.csv +18 -0
- specify_cli/missions/research/templates/research-template.md +35 -0
- specify_cli/missions/research/templates/spec-template.md +64 -0
- specify_cli/missions/research/templates/task-prompt-template.md +148 -0
- specify_cli/missions/research/templates/tasks-template.md +114 -0
- specify_cli/missions/software-dev/command-templates/accept.md +75 -0
- specify_cli/missions/software-dev/command-templates/analyze.md +183 -0
- specify_cli/missions/software-dev/command-templates/checklist.md +286 -0
- specify_cli/missions/software-dev/command-templates/clarify.md +157 -0
- specify_cli/missions/software-dev/command-templates/constitution.md +432 -0
- specify_cli/missions/software-dev/command-templates/dashboard.md +101 -0
- specify_cli/missions/software-dev/command-templates/implement.md +41 -0
- specify_cli/missions/software-dev/command-templates/merge.md +383 -0
- specify_cli/missions/software-dev/command-templates/plan.md +171 -0
- specify_cli/missions/software-dev/command-templates/review.md +32 -0
- specify_cli/missions/software-dev/command-templates/specify.md +321 -0
- specify_cli/missions/software-dev/command-templates/tasks.md +566 -0
- specify_cli/missions/software-dev/mission.yaml +100 -0
- specify_cli/missions/software-dev/templates/plan-template.md +132 -0
- specify_cli/missions/software-dev/templates/spec-template.md +116 -0
- specify_cli/missions/software-dev/templates/task-prompt-template.md +140 -0
- specify_cli/missions/software-dev/templates/tasks-template.md +159 -0
- specify_cli/orchestrator/__init__.py +75 -0
- specify_cli/orchestrator/agent_config.py +224 -0
- specify_cli/orchestrator/agents/__init__.py +170 -0
- specify_cli/orchestrator/agents/augment.py +112 -0
- specify_cli/orchestrator/agents/base.py +243 -0
- specify_cli/orchestrator/agents/claude.py +112 -0
- specify_cli/orchestrator/agents/codex.py +106 -0
- specify_cli/orchestrator/agents/copilot.py +137 -0
- specify_cli/orchestrator/agents/cursor.py +139 -0
- specify_cli/orchestrator/agents/gemini.py +115 -0
- specify_cli/orchestrator/agents/kilocode.py +94 -0
- specify_cli/orchestrator/agents/opencode.py +132 -0
- specify_cli/orchestrator/agents/qwen.py +96 -0
- specify_cli/orchestrator/config.py +455 -0
- specify_cli/orchestrator/executor.py +642 -0
- specify_cli/orchestrator/integration.py +1230 -0
- specify_cli/orchestrator/monitor.py +898 -0
- specify_cli/orchestrator/scheduler.py +832 -0
- specify_cli/orchestrator/state.py +508 -0
- specify_cli/orchestrator/testing/__init__.py +122 -0
- specify_cli/orchestrator/testing/availability.py +346 -0
- specify_cli/orchestrator/testing/fixtures.py +684 -0
- specify_cli/orchestrator/testing/paths.py +218 -0
- specify_cli/plan_validation.py +107 -0
- specify_cli/scripts/debug-dashboard-scan.py +61 -0
- specify_cli/scripts/tasks/acceptance_support.py +695 -0
- specify_cli/scripts/tasks/task_helpers.py +506 -0
- specify_cli/scripts/tasks/tasks_cli.py +848 -0
- specify_cli/scripts/validate_encoding.py +180 -0
- specify_cli/task_metadata_validation.py +274 -0
- specify_cli/tasks_support.py +447 -0
- specify_cli/template/__init__.py +47 -0
- specify_cli/template/asset_generator.py +206 -0
- specify_cli/template/github_client.py +334 -0
- specify_cli/template/manager.py +193 -0
- specify_cli/template/renderer.py +99 -0
- specify_cli/templates/AGENTS.md +190 -0
- specify_cli/templates/POWERSHELL_SYNTAX.md +229 -0
- specify_cli/templates/agent-file-template.md +35 -0
- specify_cli/templates/checklist-template.md +42 -0
- specify_cli/templates/claudeignore-template +58 -0
- specify_cli/templates/command-templates/accept.md +141 -0
- specify_cli/templates/command-templates/analyze.md +253 -0
- specify_cli/templates/command-templates/checklist.md +352 -0
- specify_cli/templates/command-templates/clarify.md +224 -0
- specify_cli/templates/command-templates/constitution.md +432 -0
- specify_cli/templates/command-templates/dashboard.md +175 -0
- specify_cli/templates/command-templates/implement.md +190 -0
- specify_cli/templates/command-templates/merge.md +374 -0
- specify_cli/templates/command-templates/plan.md +171 -0
- specify_cli/templates/command-templates/research.md +88 -0
- specify_cli/templates/command-templates/review.md +510 -0
- specify_cli/templates/command-templates/specify.md +321 -0
- specify_cli/templates/command-templates/status.md +92 -0
- specify_cli/templates/command-templates/tasks.md +199 -0
- specify_cli/templates/git-hooks/pre-commit +22 -0
- specify_cli/templates/git-hooks/pre-commit-agent-check +37 -0
- specify_cli/templates/git-hooks/pre-commit-encoding-check +142 -0
- specify_cli/templates/plan-template.md +108 -0
- specify_cli/templates/spec-template.md +118 -0
- specify_cli/templates/task-prompt-template.md +165 -0
- specify_cli/templates/tasks-template.md +161 -0
- specify_cli/templates/vscode-settings.json +13 -0
- specify_cli/text_sanitization.py +225 -0
- specify_cli/upgrade/__init__.py +18 -0
- specify_cli/upgrade/detector.py +239 -0
- specify_cli/upgrade/metadata.py +182 -0
- specify_cli/upgrade/migrations/__init__.py +65 -0
- specify_cli/upgrade/migrations/base.py +80 -0
- specify_cli/upgrade/migrations/m_0_10_0_python_only.py +359 -0
- specify_cli/upgrade/migrations/m_0_10_12_constitution_cleanup.py +99 -0
- specify_cli/upgrade/migrations/m_0_10_14_update_implement_slash_command.py +176 -0
- specify_cli/upgrade/migrations/m_0_10_1_populate_slash_commands.py +174 -0
- specify_cli/upgrade/migrations/m_0_10_2_update_slash_commands.py +172 -0
- specify_cli/upgrade/migrations/m_0_10_6_workflow_simplification.py +174 -0
- specify_cli/upgrade/migrations/m_0_10_8_fix_memory_structure.py +252 -0
- specify_cli/upgrade/migrations/m_0_10_9_repair_templates.py +168 -0
- specify_cli/upgrade/migrations/m_0_11_0_workspace_per_wp.py +182 -0
- specify_cli/upgrade/migrations/m_0_11_1_improved_workflow_templates.py +173 -0
- specify_cli/upgrade/migrations/m_0_11_1_update_implement_slash_command.py +160 -0
- specify_cli/upgrade/migrations/m_0_11_2_improved_workflow_templates.py +173 -0
- specify_cli/upgrade/migrations/m_0_11_3_workflow_agent_flag.py +114 -0
- specify_cli/upgrade/migrations/m_0_12_0_documentation_mission.py +155 -0
- specify_cli/upgrade/migrations/m_0_12_1_remove_kitty_specs_from_gitignore.py +183 -0
- specify_cli/upgrade/migrations/m_0_2_0_specify_to_kittify.py +80 -0
- specify_cli/upgrade/migrations/m_0_4_8_gitignore_agents.py +118 -0
- specify_cli/upgrade/migrations/m_0_5_0_encoding_hooks.py +141 -0
- specify_cli/upgrade/migrations/m_0_6_5_commands_rename.py +169 -0
- specify_cli/upgrade/migrations/m_0_6_7_ensure_missions.py +228 -0
- specify_cli/upgrade/migrations/m_0_7_2_worktree_commands_dedup.py +89 -0
- specify_cli/upgrade/migrations/m_0_7_3_update_scripts.py +114 -0
- specify_cli/upgrade/migrations/m_0_8_0_remove_active_mission.py +82 -0
- specify_cli/upgrade/migrations/m_0_8_0_worktree_agents_symlink.py +148 -0
- specify_cli/upgrade/migrations/m_0_9_0_frontmatter_only_lanes.py +346 -0
- specify_cli/upgrade/migrations/m_0_9_1_complete_lane_migration.py +656 -0
- specify_cli/upgrade/migrations/m_0_9_2_research_mission_templates.py +221 -0
- specify_cli/upgrade/registry.py +121 -0
- specify_cli/upgrade/runner.py +284 -0
- specify_cli/validators/__init__.py +14 -0
- specify_cli/validators/paths.py +154 -0
- specify_cli/validators/research.py +428 -0
- specify_cli/verify_enhanced.py +270 -0
- specify_cli/workspace_context.py +224 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate documentation work packages and subtasks aligned to Divio types.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Command Template: /spec-kitty.tasks (Documentation Mission)
|
|
6
|
+
|
|
7
|
+
**Phase**: Design (finalizing work breakdown)
|
|
8
|
+
**Purpose**: Break documentation work into independently implementable work packages with subtasks.
|
|
9
|
+
|
|
10
|
+
## User Input
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
$ARGUMENTS
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
You **MUST** consider the user input before proceeding (if not empty).
|
|
17
|
+
|
|
18
|
+
## Location Pre-flight Check
|
|
19
|
+
|
|
20
|
+
Verify you are in the main repository (not a worktree). Task generation happens in main for ALL missions.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
git branch --show-current # Should show "main"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Note**: Task generation in main is standard for all spec-kitty missions. Implementation happens in per-WP worktrees.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Outline
|
|
31
|
+
|
|
32
|
+
1. **Setup**: Run `spec-kitty agent feature check-prerequisites --json --paths-only --include-tasks`
|
|
33
|
+
|
|
34
|
+
2. **Load design documents**:
|
|
35
|
+
- spec.md (documentation goals, selected Divio types)
|
|
36
|
+
- plan.md (structure design, generator configs)
|
|
37
|
+
- gap-analysis.md (if gap-filling mode)
|
|
38
|
+
- meta.json (iteration_mode, generators_configured)
|
|
39
|
+
|
|
40
|
+
3. **Derive fine-grained subtasks**:
|
|
41
|
+
|
|
42
|
+
### Subtask Patterns for Documentation
|
|
43
|
+
|
|
44
|
+
**Structure Setup** (all modes):
|
|
45
|
+
- T001: Create `docs/` directory structure
|
|
46
|
+
- T002: Create index.md landing page
|
|
47
|
+
- T003: [P] Configure Sphinx (if Python detected)
|
|
48
|
+
- T004: [P] Configure JSDoc (if JavaScript detected)
|
|
49
|
+
- T005: [P] Configure rustdoc (if Rust detected)
|
|
50
|
+
- T006: Set up build script (Makefile or build.sh)
|
|
51
|
+
|
|
52
|
+
**Tutorial Creation** (if tutorial selected):
|
|
53
|
+
- T010: Write "Getting Started" tutorial
|
|
54
|
+
- T011: Write "Basic Usage" tutorial
|
|
55
|
+
- T012: [P] Write "Advanced Topics" tutorial
|
|
56
|
+
- T013: Add screenshots/examples to tutorials
|
|
57
|
+
- T014: Test tutorials with fresh user
|
|
58
|
+
|
|
59
|
+
**How-To Creation** (if how-to selected):
|
|
60
|
+
- T020: Write "How to Deploy" guide
|
|
61
|
+
- T021: Write "How to Configure" guide
|
|
62
|
+
- T022: Write "How to Troubleshoot" guide
|
|
63
|
+
- T023: [P] Write additional task-specific guides
|
|
64
|
+
|
|
65
|
+
**Reference Generation** (if reference selected):
|
|
66
|
+
- T030: Generate Python API reference (Sphinx autodoc)
|
|
67
|
+
- T031: Generate JavaScript API reference (JSDoc)
|
|
68
|
+
- T032: Generate Rust API reference (cargo doc)
|
|
69
|
+
- T033: Write CLI reference (manual)
|
|
70
|
+
- T034: Write configuration reference (manual)
|
|
71
|
+
- T035: Integrate generated + manual reference
|
|
72
|
+
- T036: Validate all public APIs documented
|
|
73
|
+
|
|
74
|
+
**Explanation Creation** (if explanation selected):
|
|
75
|
+
- T040: Write "Architecture Overview" explanation
|
|
76
|
+
- T041: Write "Core Concepts" explanation
|
|
77
|
+
- T042: Write "Design Decisions" explanation
|
|
78
|
+
- T043: [P] Add diagrams illustrating concepts
|
|
79
|
+
|
|
80
|
+
**Quality Validation** (all modes):
|
|
81
|
+
- T050: Validate heading hierarchy
|
|
82
|
+
- T051: Validate all images have alt text
|
|
83
|
+
- T052: Check for broken internal links
|
|
84
|
+
- T053: Check for broken external links
|
|
85
|
+
- T054: Verify code examples work
|
|
86
|
+
- T055: Check bias-free language
|
|
87
|
+
- T056: Build documentation site
|
|
88
|
+
- T057: Deploy to hosting (if applicable)
|
|
89
|
+
|
|
90
|
+
4. **Roll subtasks into work packages**:
|
|
91
|
+
|
|
92
|
+
### Work Package Patterns
|
|
93
|
+
|
|
94
|
+
**For Initial Mode**:
|
|
95
|
+
- WP01: Structure & Generator Setup (T001-T006)
|
|
96
|
+
- WP02: Tutorial Documentation (T010-T014) - If tutorials selected
|
|
97
|
+
- WP03: How-To Documentation (T020-T023) - If how-tos selected
|
|
98
|
+
- WP04: Reference Documentation (T030-T036) - If reference selected
|
|
99
|
+
- WP05: Explanation Documentation (T040-T043) - If explanation selected
|
|
100
|
+
- WP06: Quality Validation (T050-T057)
|
|
101
|
+
|
|
102
|
+
**For Gap-Filling Mode**:
|
|
103
|
+
- WP01: High-Priority Gaps (tasks for critical missing docs from gap analysis)
|
|
104
|
+
- WP02: Medium-Priority Gaps (tasks for important missing docs)
|
|
105
|
+
- WP03: Generator Updates (regenerate outdated API docs)
|
|
106
|
+
- WP04: Quality Validation (validate all docs, old and new)
|
|
107
|
+
|
|
108
|
+
**For Feature-Specific Mode**:
|
|
109
|
+
- WP01: Feature Documentation (tasks for documenting the feature across selected Divio types)
|
|
110
|
+
- WP02: Integration (tasks for integrating feature docs with existing docs)
|
|
111
|
+
- WP03: Quality Validation (validate feature-specific docs)
|
|
112
|
+
|
|
113
|
+
### Prioritization
|
|
114
|
+
|
|
115
|
+
- **P0 (foundation)**: Structure setup, generator configuration
|
|
116
|
+
- **P1 (critical)**: Tutorials (if new users), Reference (if API docs missing)
|
|
117
|
+
- **P2 (important)**: How-Tos (solve known problems), Explanation (understanding)
|
|
118
|
+
- **P3 (polish)**: Quality validation, accessibility improvements
|
|
119
|
+
|
|
120
|
+
5. **Write `tasks.md`**:
|
|
121
|
+
- Use `templates/tasks-template.md` from documentation mission
|
|
122
|
+
- Include work packages with subtasks
|
|
123
|
+
- Mark parallel opportunities (`[P]`)
|
|
124
|
+
- Define dependencies (WP01 must complete before others)
|
|
125
|
+
- Identify MVP scope (typically WP01 + Reference generation)
|
|
126
|
+
|
|
127
|
+
6. **Generate prompt files**:
|
|
128
|
+
- Create flat `FEATURE_DIR/tasks/` directory (no subdirectories!)
|
|
129
|
+
- For each work package:
|
|
130
|
+
- Generate `WPxx-slug.md` using `templates/task-prompt-template.md`
|
|
131
|
+
- Include objectives, context, subtask guidance
|
|
132
|
+
- Add quality validation strategy (documentation-specific)
|
|
133
|
+
- Include Divio compliance checks
|
|
134
|
+
- Add accessibility/inclusivity checklists
|
|
135
|
+
- Set `lane: "planned"` in frontmatter
|
|
136
|
+
|
|
137
|
+
7. **Report**:
|
|
138
|
+
- Path to tasks.md
|
|
139
|
+
- Work package count and subtask tallies
|
|
140
|
+
- Parallelization opportunities
|
|
141
|
+
- MVP recommendation
|
|
142
|
+
- Next command: `/spec-kitty.implement WP01` (or review tasks.md first)
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Documentation-Specific Task Generation Rules
|
|
147
|
+
|
|
148
|
+
**Generator Subtasks**:
|
|
149
|
+
- Mark generators as `[P]` (parallel) - different languages can generate simultaneously
|
|
150
|
+
- Include tool check subtasks (verify sphinx-build, npx, cargo available)
|
|
151
|
+
- Include config generation subtasks (create conf.py, jsdoc.json)
|
|
152
|
+
- Include actual generation subtasks (run the generator)
|
|
153
|
+
- Include integration subtasks (link generated docs into manual structure)
|
|
154
|
+
|
|
155
|
+
**Content Authoring Subtasks**:
|
|
156
|
+
- One subtask per document (don't bundle "write all tutorials" into one task)
|
|
157
|
+
- Mark independent docs as `[P]` (parallel) - different docs can be written simultaneously
|
|
158
|
+
- Include validation subtasks (test tutorials, verify how-tos solve problems)
|
|
159
|
+
|
|
160
|
+
**Quality Validation Subtasks**:
|
|
161
|
+
- Mark validation checks as `[P]` (parallel) - different checks can run simultaneously
|
|
162
|
+
- Include automated checks (link checker, spell check, build)
|
|
163
|
+
- Include manual checks (accessibility review, Divio compliance)
|
|
164
|
+
|
|
165
|
+
**Work Package Scope**:
|
|
166
|
+
- Each Divio type typically gets its own work package (WP for tutorials, WP for how-tos, etc.)
|
|
167
|
+
- Exception: Small projects may combine types if only 1-2 docs per type
|
|
168
|
+
- Generator setup is always separate (WP01 foundation)
|
|
169
|
+
- Quality validation is always separate (final WP)
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Key Guidelines
|
|
174
|
+
|
|
175
|
+
**For Agents**:
|
|
176
|
+
- Adapt work packages to iteration mode
|
|
177
|
+
- For gap-filling, work packages target specific gaps from audit
|
|
178
|
+
- Mark generator invocations as parallel (different languages)
|
|
179
|
+
- Mark independent docs as parallel (different files)
|
|
180
|
+
- Include Divio compliance in Definition of Done for each WP
|
|
181
|
+
- Quality validation is final work package (depends on all others)
|
|
182
|
+
- If publish is in scope, add a release WP to produce `release.md`
|
|
183
|
+
|
|
184
|
+
**For Users**:
|
|
185
|
+
- Tasks.md shows the full work breakdown
|
|
186
|
+
- Work packages are independently implementable
|
|
187
|
+
- MVP often just structure + reference (API docs)
|
|
188
|
+
- Full documentation includes all Divio types
|
|
189
|
+
- Parallel work packages can be implemented simultaneously
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
name: "Documentation Kitty"
|
|
2
|
+
description: "Create and maintain high-quality software documentation following Write the Docs and Divio principles"
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
domain: "other"
|
|
5
|
+
|
|
6
|
+
# Workflow customization
|
|
7
|
+
workflow:
|
|
8
|
+
phases:
|
|
9
|
+
- name: "discover"
|
|
10
|
+
description: "Identify documentation needs and target audience"
|
|
11
|
+
- name: "audit"
|
|
12
|
+
description: "Analyze existing documentation and identify gaps"
|
|
13
|
+
- name: "design"
|
|
14
|
+
description: "Plan documentation structure and Divio types"
|
|
15
|
+
- name: "generate"
|
|
16
|
+
description: "Create documentation from templates and generators"
|
|
17
|
+
- name: "validate"
|
|
18
|
+
description: "Check quality, accessibility, and completeness"
|
|
19
|
+
- name: "publish"
|
|
20
|
+
description: "Deploy documentation and notify stakeholders"
|
|
21
|
+
|
|
22
|
+
# Expected artifacts
|
|
23
|
+
artifacts:
|
|
24
|
+
required:
|
|
25
|
+
- spec.md
|
|
26
|
+
- plan.md
|
|
27
|
+
- tasks.md
|
|
28
|
+
- gap-analysis.md
|
|
29
|
+
optional:
|
|
30
|
+
- divio-templates/
|
|
31
|
+
- generator-configs/
|
|
32
|
+
- audit-report.md
|
|
33
|
+
- research.md
|
|
34
|
+
- data-model.md
|
|
35
|
+
- quickstart.md
|
|
36
|
+
- release.md
|
|
37
|
+
|
|
38
|
+
# Path conventions for this mission
|
|
39
|
+
paths:
|
|
40
|
+
workspace: "docs/"
|
|
41
|
+
deliverables: "docs/output/"
|
|
42
|
+
documentation: "docs/"
|
|
43
|
+
|
|
44
|
+
# Validation rules
|
|
45
|
+
validation:
|
|
46
|
+
checks:
|
|
47
|
+
- all_divio_types_valid
|
|
48
|
+
- no_conflicting_generators
|
|
49
|
+
- templates_populated
|
|
50
|
+
- gap_analysis_complete
|
|
51
|
+
custom_validators: false # No custom validators.py initially
|
|
52
|
+
|
|
53
|
+
# MCP tools recommended for this mission
|
|
54
|
+
mcp_tools:
|
|
55
|
+
required:
|
|
56
|
+
- filesystem
|
|
57
|
+
- git
|
|
58
|
+
recommended:
|
|
59
|
+
- web-search
|
|
60
|
+
- code-search
|
|
61
|
+
optional:
|
|
62
|
+
- github
|
|
63
|
+
- gitlab
|
|
64
|
+
|
|
65
|
+
# Agent personality/instructions
|
|
66
|
+
agent_context: |
|
|
67
|
+
You are a documentation agent following Write the Docs best practices and the Divio documentation system.
|
|
68
|
+
|
|
69
|
+
Key Practices:
|
|
70
|
+
- Documentation as code: docs live in version control alongside source
|
|
71
|
+
- Divio 4-type system: tutorial, how-to, reference, explanation (distinct purposes)
|
|
72
|
+
- Accessibility: clear language, proper headings, alt text for images
|
|
73
|
+
- Bias-free language: inclusive examples and terminology
|
|
74
|
+
- Iterative improvement: support gap-filling and feature-specific documentation
|
|
75
|
+
|
|
76
|
+
Workflow Phases: discover → audit → design → generate → validate → publish
|
|
77
|
+
|
|
78
|
+
Generator Integration:
|
|
79
|
+
- JSDoc for JavaScript/TypeScript API reference
|
|
80
|
+
- Sphinx for Python API reference (autodoc + napoleon)
|
|
81
|
+
- rustdoc for Rust API reference
|
|
82
|
+
|
|
83
|
+
Gap Analysis:
|
|
84
|
+
- Audit existing docs to identify missing Divio types
|
|
85
|
+
- Build coverage matrix showing what exists vs what's needed
|
|
86
|
+
- Prioritize gaps by user impact
|
|
87
|
+
|
|
88
|
+
# Task metadata fields
|
|
89
|
+
task_metadata:
|
|
90
|
+
required:
|
|
91
|
+
- task_id
|
|
92
|
+
- lane
|
|
93
|
+
- phase
|
|
94
|
+
- agent
|
|
95
|
+
optional:
|
|
96
|
+
- shell_pid
|
|
97
|
+
- assignee
|
|
98
|
+
- estimated_hours
|
|
99
|
+
|
|
100
|
+
# Command customization
|
|
101
|
+
commands:
|
|
102
|
+
specify:
|
|
103
|
+
prompt: "Define documentation needs: iteration mode (initial/gap-filling/feature-specific), Divio types to include, target audience, and documentation goals"
|
|
104
|
+
plan:
|
|
105
|
+
prompt: "Design documentation structure, configure generators (JSDoc/Sphinx/rustdoc), plan gap-filling strategy if iterating"
|
|
106
|
+
tasks:
|
|
107
|
+
prompt: "Break documentation work into packages: template creation, generator setup, content authoring, quality validation"
|
|
108
|
+
implement:
|
|
109
|
+
prompt: "Generate documentation from templates, invoke generators for reference docs, populate templates with project-specific content"
|
|
110
|
+
review:
|
|
111
|
+
prompt: "Validate Divio type adherence, check accessibility guidelines, verify generator output quality, assess completeness"
|
|
112
|
+
accept:
|
|
113
|
+
prompt: "Validate documentation completeness, quality gates, and readiness for publication"
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: explanation
|
|
3
|
+
divio_category: understanding-oriented
|
|
4
|
+
target_audience: curious-users
|
|
5
|
+
purpose: conceptual-clarification
|
|
6
|
+
outcome: user-understands-why-and-how
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Explanation: {CONCEPT_OR_TOPIC}
|
|
10
|
+
|
|
11
|
+
> **Divio Type**: Explanation (Understanding-Oriented)
|
|
12
|
+
> **Target Audience**: Users who want to understand concepts and context
|
|
13
|
+
> **Purpose**: Clarify and illuminate to deepen understanding
|
|
14
|
+
> **Outcome**: User understands why things are the way they are
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
{Introduce the concept/topic and why understanding it matters}
|
|
19
|
+
|
|
20
|
+
This explanation covers:
|
|
21
|
+
- {Key aspect 1 that will be discussed}
|
|
22
|
+
- {Key aspect 2 that will be discussed}
|
|
23
|
+
- {Key aspect 3 that will be discussed}
|
|
24
|
+
|
|
25
|
+
## Background and Context
|
|
26
|
+
|
|
27
|
+
{Provide historical context or background that helps frame the discussion}
|
|
28
|
+
|
|
29
|
+
**Why this matters**: {Explain relevance to users}
|
|
30
|
+
|
|
31
|
+
{Add diagram if it helps explain the concept}
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
## Core Concepts
|
|
36
|
+
|
|
37
|
+
### {Concept 1}
|
|
38
|
+
|
|
39
|
+
{Explain the concept in depth}
|
|
40
|
+
|
|
41
|
+
**Analogy**: {Use an analogy if it helps understanding}
|
|
42
|
+
|
|
43
|
+
**Why it works this way**: {Explain the reasoning}
|
|
44
|
+
|
|
45
|
+
**Implications**:
|
|
46
|
+
- {What this means for users}
|
|
47
|
+
- {How this affects behavior}
|
|
48
|
+
- {What to keep in mind}
|
|
49
|
+
|
|
50
|
+
### {Concept 2}
|
|
51
|
+
|
|
52
|
+
{Explain the next concept}
|
|
53
|
+
|
|
54
|
+
**Connection to {Concept 1}**: {How concepts relate}
|
|
55
|
+
|
|
56
|
+
### {Concept 3}
|
|
57
|
+
|
|
58
|
+
{Continue explaining key concepts}
|
|
59
|
+
|
|
60
|
+
## How It Works
|
|
61
|
+
|
|
62
|
+
{Explain the mechanism or process in detail}
|
|
63
|
+
|
|
64
|
+
**Step-by-step explanation**:
|
|
65
|
+
|
|
66
|
+
1. **{Phase 1}**: {What happens and why}
|
|
67
|
+
2. **{Phase 2}**: {What happens next and why}
|
|
68
|
+
3. **{Phase 3}**: {Continue the explanation}
|
|
69
|
+
|
|
70
|
+
{Use diagrams, flowcharts, or illustrations to clarify}
|
|
71
|
+
|
|
72
|
+
## Design Decisions
|
|
73
|
+
|
|
74
|
+
### Why {Decision/Approach} Was Chosen
|
|
75
|
+
|
|
76
|
+
**The problem**: {What needed to be solved}
|
|
77
|
+
|
|
78
|
+
**Considered alternatives**:
|
|
79
|
+
- **Option A**: {Description}
|
|
80
|
+
- Pros: {Benefits}
|
|
81
|
+
- Cons: {Drawbacks}
|
|
82
|
+
- **Option B**: {Description}
|
|
83
|
+
- Pros: {Benefits}
|
|
84
|
+
- Cons: {Drawbacks}
|
|
85
|
+
- **Chosen: Option C**: {Description}
|
|
86
|
+
- Why this was chosen: {Reasoning}
|
|
87
|
+
- Trade-offs accepted: {What was sacrificed for the benefits}
|
|
88
|
+
|
|
89
|
+
## Common Misconceptions
|
|
90
|
+
|
|
91
|
+
### Misconception: "{Common wrong belief}"
|
|
92
|
+
|
|
93
|
+
**Reality**: {What's actually true}
|
|
94
|
+
|
|
95
|
+
**Why the confusion**: {Why people think this}
|
|
96
|
+
|
|
97
|
+
**Clarification**: {Detailed explanation of the truth}
|
|
98
|
+
|
|
99
|
+
### Misconception: "{Another common wrong belief}"
|
|
100
|
+
|
|
101
|
+
**Reality**: {What's actually true}
|
|
102
|
+
|
|
103
|
+
**Example to illustrate**: {Concrete example that clarifies}
|
|
104
|
+
|
|
105
|
+
## Relationships and Connections
|
|
106
|
+
|
|
107
|
+
### Connection to {Related Concept}
|
|
108
|
+
|
|
109
|
+
{Explain how this concept relates to another}
|
|
110
|
+
|
|
111
|
+
**Differences**:
|
|
112
|
+
- {Key difference 1}
|
|
113
|
+
- {Key difference 2}
|
|
114
|
+
|
|
115
|
+
**Similarities**:
|
|
116
|
+
- {Key similarity 1}
|
|
117
|
+
- {Key similarity 2}
|
|
118
|
+
|
|
119
|
+
### Impact on {Related System/Feature}
|
|
120
|
+
|
|
121
|
+
{Explain how this concept affects other parts of the system}
|
|
122
|
+
|
|
123
|
+
## Trade-offs and Limitations
|
|
124
|
+
|
|
125
|
+
**Benefits of this approach**:
|
|
126
|
+
- {Benefit 1}
|
|
127
|
+
- {Benefit 2}
|
|
128
|
+
- {Benefit 3}
|
|
129
|
+
|
|
130
|
+
**Limitations**:
|
|
131
|
+
- {Limitation 1 and why it exists}
|
|
132
|
+
- {Limitation 2 and why it exists}
|
|
133
|
+
|
|
134
|
+
**When this might not be ideal**: {Scenarios where trade-offs are problematic}
|
|
135
|
+
|
|
136
|
+
## Practical Implications
|
|
137
|
+
|
|
138
|
+
### For {User Type 1}
|
|
139
|
+
|
|
140
|
+
{What this concept means for this type of user}
|
|
141
|
+
|
|
142
|
+
**Key takeaways**:
|
|
143
|
+
- {Actionable insight 1}
|
|
144
|
+
- {Actionable insight 2}
|
|
145
|
+
|
|
146
|
+
### For {User Type 2}
|
|
147
|
+
|
|
148
|
+
{What this concept means for this type of user}
|
|
149
|
+
|
|
150
|
+
## Further Reading
|
|
151
|
+
|
|
152
|
+
- **Tutorial**: Learn by doing with [Tutorial: {Topic}](../tutorials/{link})
|
|
153
|
+
- **How-To**: Apply this in practice with [How-To: {Task}](../how-to/{link})
|
|
154
|
+
- **Reference**: Technical details in [{Reference}](../reference/{link})
|
|
155
|
+
- **External**: [Article/Book about {Topic}]({external-link})
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Write the Docs Best Practices (Remove this section before publishing)
|
|
160
|
+
|
|
161
|
+
**Explanation Principles**:
|
|
162
|
+
- ✅ Understanding-oriented: Clarify and illuminate
|
|
163
|
+
- ✅ Discuss concepts, not tasks (not instructional)
|
|
164
|
+
- ✅ Provide context and background
|
|
165
|
+
- ✅ Explain "why" things are the way they are
|
|
166
|
+
- ✅ Discuss alternatives and trade-offs
|
|
167
|
+
- ✅ Make connections between ideas
|
|
168
|
+
- ✅ Can be more free-form than other types
|
|
169
|
+
- ✅ No imperative mood (not "do this")
|
|
170
|
+
|
|
171
|
+
**Accessibility**:
|
|
172
|
+
- ✅ Proper heading hierarchy
|
|
173
|
+
- ✅ Alt text for diagrams (especially important for conceptual diagrams)
|
|
174
|
+
- ✅ Clear language, define technical terms
|
|
175
|
+
- ✅ Use diagrams to clarify complex concepts
|
|
176
|
+
- ✅ Descriptive link text
|
|
177
|
+
|
|
178
|
+
**Inclusivity**:
|
|
179
|
+
- ✅ Diverse examples
|
|
180
|
+
- ✅ Gender-neutral language
|
|
181
|
+
- ✅ No cultural assumptions
|
|
182
|
+
- ✅ Consider different learning styles (visual, verbal, etc.)
|
|
183
|
+
|
|
184
|
+
**Explanation-Specific Guidelines**:
|
|
185
|
+
- Start with "why" before "what"
|
|
186
|
+
- Use analogies and metaphors to clarify
|
|
187
|
+
- Diagrams are very valuable for explanations
|
|
188
|
+
- Discuss design decisions and trade-offs
|
|
189
|
+
- Address common misconceptions
|
|
190
|
+
- Make connections to related concepts
|
|
191
|
+
- Don't just describe - explain and clarify
|
|
192
|
+
- Be conversational but accurate
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: how-to
|
|
3
|
+
divio_category: goal-oriented
|
|
4
|
+
target_audience: experienced-users
|
|
5
|
+
purpose: problem-solving-guide
|
|
6
|
+
outcome: user-solves-specific-problem
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# How-To: {TASK_TO_ACCOMPLISH}
|
|
10
|
+
|
|
11
|
+
> **Divio Type**: How-To Guide (Goal-Oriented)
|
|
12
|
+
> **Target Audience**: Users with basic familiarity who need to solve a specific problem
|
|
13
|
+
> **Purpose**: Provide practical steps to accomplish a specific goal
|
|
14
|
+
> **Outcome**: User successfully completes the task
|
|
15
|
+
|
|
16
|
+
## Goal
|
|
17
|
+
|
|
18
|
+
This guide shows you how to {accomplish specific task}.
|
|
19
|
+
|
|
20
|
+
**Use this guide when you need to**: {Describe the problem/goal this solves}
|
|
21
|
+
|
|
22
|
+
## Prerequisites
|
|
23
|
+
|
|
24
|
+
- {Required knowledge - assume user has basic familiarity}
|
|
25
|
+
- {Required setup or configuration}
|
|
26
|
+
- {Required tools or access}
|
|
27
|
+
|
|
28
|
+
## Quick Summary
|
|
29
|
+
|
|
30
|
+
If you're experienced, here's the short version:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Step 1: {Brief description}
|
|
34
|
+
{command}
|
|
35
|
+
|
|
36
|
+
# Step 2: {Brief description}
|
|
37
|
+
{command}
|
|
38
|
+
|
|
39
|
+
# Step 3: {Brief description}
|
|
40
|
+
{command}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Detailed Steps
|
|
44
|
+
|
|
45
|
+
### 1. {First Major Step}
|
|
46
|
+
|
|
47
|
+
{Brief context for why this step is needed}
|
|
48
|
+
|
|
49
|
+
```{language}
|
|
50
|
+
{code-or-command}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Options**:
|
|
54
|
+
- `--option1`: {When to use this}
|
|
55
|
+
- `--option2`: {When to use this}
|
|
56
|
+
|
|
57
|
+
**Common variations**:
|
|
58
|
+
- **If you need {variation}**: Use `{alternative command}`
|
|
59
|
+
- **If you're using {different setup}**: Modify the command to `{modified version}`
|
|
60
|
+
|
|
61
|
+
### 2. {Second Major Step}
|
|
62
|
+
|
|
63
|
+
{Brief context}
|
|
64
|
+
|
|
65
|
+
```{language}
|
|
66
|
+
{code-or-command}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Important**: {Critical thing to watch out for}
|
|
70
|
+
|
|
71
|
+
### 3. {Third Major Step}
|
|
72
|
+
|
|
73
|
+
{Brief context}
|
|
74
|
+
|
|
75
|
+
```{language}
|
|
76
|
+
{code-or-command}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 4. {Continue as needed...}
|
|
80
|
+
|
|
81
|
+
## Verification
|
|
82
|
+
|
|
83
|
+
To confirm it worked:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
{command-to-verify}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
You should see:
|
|
90
|
+
```
|
|
91
|
+
{expected-output}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Troubleshooting
|
|
95
|
+
|
|
96
|
+
### Issue: {Common problem}
|
|
97
|
+
|
|
98
|
+
**Symptoms**:
|
|
99
|
+
- {What user sees}
|
|
100
|
+
- {Error message or behavior}
|
|
101
|
+
|
|
102
|
+
**Cause**: {Why this happens}
|
|
103
|
+
|
|
104
|
+
**Solution**:
|
|
105
|
+
```bash
|
|
106
|
+
{fix-command}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Issue: {Another common problem}
|
|
110
|
+
|
|
111
|
+
**Symptoms**: {What user sees}
|
|
112
|
+
|
|
113
|
+
**Solution**: {Steps to fix}
|
|
114
|
+
|
|
115
|
+
## Alternative Approaches
|
|
116
|
+
|
|
117
|
+
**Method 1** (described above): Best when {scenario}
|
|
118
|
+
|
|
119
|
+
**Method 2**: If you need {different requirement}, use this instead:
|
|
120
|
+
```bash
|
|
121
|
+
{alternative-approach}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Method 3**: For {specific use case}:
|
|
125
|
+
```bash
|
|
126
|
+
{another-approach}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Related Resources
|
|
130
|
+
|
|
131
|
+
- **Tutorial**: New to this? Start with [Tutorial: {Topic}](../tutorials/{link})
|
|
132
|
+
- **Reference**: See [{API/CLI Reference}](../reference/{link}) for all options
|
|
133
|
+
- **Explanation**: Understand why this works in [Explanation: {Topic}](../explanation/{link})
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Write the Docs Best Practices (Remove this section before publishing)
|
|
138
|
+
|
|
139
|
+
**How-To Principles**:
|
|
140
|
+
- ✅ Goal-oriented: Solve a specific problem
|
|
141
|
+
- ✅ Assume reader has basic knowledge (not for beginners)
|
|
142
|
+
- ✅ Focus on practical steps, minimal theory
|
|
143
|
+
- ✅ Flexible: Reader can adapt to their situation
|
|
144
|
+
- ✅ Provide options and alternatives for different scenarios
|
|
145
|
+
- ✅ Include troubleshooting for common issues
|
|
146
|
+
- ✅ Link to Reference for details, Explanation for "why"
|
|
147
|
+
- ✅ Use imperative mood ("Do this", not "You might want to")
|
|
148
|
+
|
|
149
|
+
**Accessibility**:
|
|
150
|
+
- ✅ Proper heading hierarchy
|
|
151
|
+
- ✅ Alt text for all images
|
|
152
|
+
- ✅ Clear, plain language
|
|
153
|
+
- ✅ Syntax highlighting for code blocks
|
|
154
|
+
- ✅ Descriptive link text
|
|
155
|
+
|
|
156
|
+
**Inclusivity**:
|
|
157
|
+
- ✅ Diverse examples
|
|
158
|
+
- ✅ Gender-neutral language
|
|
159
|
+
- ✅ No cultural assumptions
|
|
160
|
+
|
|
161
|
+
**How-To Specific Guidelines**:
|
|
162
|
+
- Start with the goal (what will be accomplished)
|
|
163
|
+
- Provide quick summary for experienced users
|
|
164
|
+
- Offer options and variations (real-world scenarios vary)
|
|
165
|
+
- Include verification step (how to know it worked)
|
|
166
|
+
- Troubleshoot common problems
|
|
167
|
+
- Don't explain concepts - link to Explanations
|
|
168
|
+
- Assume familiarity - not a tutorial
|