@sous-io/sous 0.1.1 → 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.
Files changed (205) hide show
  1. package/README.md +115 -35
  2. package/bin/run.js +10 -1
  3. package/docs/markdown/README.md +27 -0
  4. package/docs/markdown/_sidebar.md +18 -0
  5. package/docs/markdown/commands.md +308 -0
  6. package/docs/markdown/config-discovery.md +74 -0
  7. package/docs/markdown/config-inspection.md +69 -0
  8. package/docs/markdown/config-layers.md +92 -0
  9. package/docs/markdown/config-variables.md +79 -0
  10. package/docs/markdown/configuration.md +71 -0
  11. package/docs/markdown/design-principles.md +59 -0
  12. package/docs/markdown/repositories-authoring.md +409 -0
  13. package/docs/markdown/repositories-consuming.md +580 -0
  14. package/docs/markdown/repositories-file-formats.md +1084 -0
  15. package/docs/markdown/repositories-variables.md +387 -0
  16. package/docs/markdown/repositories.md +303 -0
  17. package/docs/markdown/skill-categories.md +58 -0
  18. package/package.json +72 -8
  19. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/SKILL.tpl.md +20 -20
  20. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/examples/about-something.md +2 -2
  21. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/examples/do-something.md +1 -1
  22. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/advanced-patterns.md +6 -6
  23. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/commands.md +5 -5
  24. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/frontmatter.md +3 -3
  25. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-liquid-templates/SKILL.tpl.md +40 -25
  26. package/recipes/core/sous-skills/skills/about-sous/SKILL.tpl.md +70 -0
  27. package/recipes/core/sous-skills/skills/about-sous-configuration/SKILL.tpl.md +75 -0
  28. package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/create-skill/SKILL.tpl.md +8 -9
  29. package/recipes/core/sous-skills/sous.recipe.yaml +45 -0
  30. package/sous.config.schema.json +337 -0
  31. package/src/base-command.ts +220 -67
  32. package/src/commands/build.ts +150 -73
  33. package/src/commands/clear.ts +23 -15
  34. package/src/commands/compile.ts +74 -16
  35. package/src/commands/config/get.ts +110 -0
  36. package/src/commands/config/show.ts +32 -0
  37. package/src/commands/config/validate.ts +53 -0
  38. package/src/commands/help.ts +46 -0
  39. package/src/commands/launch.ts +36 -14
  40. package/src/commands/lock/rebuild.ts +241 -0
  41. package/src/commands/lock/show.ts +115 -0
  42. package/src/commands/namespace/list.ts +117 -0
  43. package/src/commands/namespace/show.ts +110 -0
  44. package/src/commands/prune.ts +3 -11
  45. package/src/commands/recipe/list.ts +95 -0
  46. package/src/commands/recipe/show.ts +301 -0
  47. package/src/commands/repo/add.ts +145 -0
  48. package/src/commands/repo/gc.ts +172 -0
  49. package/src/commands/repo/init.ts +136 -0
  50. package/src/commands/repo/link.ts +500 -0
  51. package/src/commands/repo/list.ts +179 -0
  52. package/src/commands/repo/release.ts +625 -0
  53. package/src/commands/repo/remove.ts +193 -0
  54. package/src/commands/repo/search.ts +189 -0
  55. package/src/commands/repo/submit.ts +133 -0
  56. package/src/commands/repo/unlink.ts +147 -0
  57. package/src/commands/subscription/add.ts +285 -0
  58. package/src/commands/subscription/list.ts +129 -0
  59. package/src/commands/subscription/remove.ts +181 -0
  60. package/src/commands/vars/ask.ts +374 -0
  61. package/src/commands/vars/index.ts +79 -0
  62. package/src/commands/vars/list.ts +67 -0
  63. package/src/commands/vars/show.ts +77 -0
  64. package/src/config-command.ts +30 -0
  65. package/src/lib/build-service.ts +206 -54
  66. package/src/lib/config-discovery.ts +220 -27
  67. package/src/lib/config-inspect.ts +145 -0
  68. package/src/lib/config-kernel.mjs +377 -0
  69. package/src/lib/config-schema.ts +361 -0
  70. package/src/lib/env-file.ts +328 -0
  71. package/src/lib/env-local.ts +18 -1
  72. package/src/lib/errors.ts +32 -0
  73. package/src/lib/include-resolver.ts +108 -15
  74. package/src/lib/interactive.ts +165 -0
  75. package/src/lib/markdown-compiler.ts +118 -37
  76. package/src/lib/package-info.ts +25 -0
  77. package/src/lib/pid-service.ts +32 -21
  78. package/src/lib/refs/find.ts +589 -0
  79. package/src/lib/refs/index.ts +12 -0
  80. package/src/lib/refs/pick.ts +147 -0
  81. package/src/lib/refs/scopes.ts +61 -0
  82. package/src/lib/repos/catalog-display.ts +116 -0
  83. package/src/lib/repos/catalog-inputs.ts +160 -0
  84. package/src/lib/repos/catalog.ts +722 -0
  85. package/src/lib/repos/core-recipe.ts +105 -0
  86. package/src/lib/repos/defaults.ts +175 -0
  87. package/src/lib/repos/formats/common.ts +389 -0
  88. package/src/lib/repos/formats/index-file.ts +215 -0
  89. package/src/lib/repos/formats/links-map.ts +96 -0
  90. package/src/lib/repos/formats/lockfile.ts +167 -0
  91. package/src/lib/repos/formats/patterns.ts +57 -0
  92. package/src/lib/repos/formats/recipe-manifest.ts +395 -0
  93. package/src/lib/repos/formats/repo-manifest.ts +88 -0
  94. package/src/lib/repos/formats/store-entry.ts +84 -0
  95. package/src/lib/repos/freshness.ts +208 -0
  96. package/src/lib/repos/git-clone.ts +312 -0
  97. package/src/lib/repos/identity.ts +89 -0
  98. package/src/lib/repos/index.ts +58 -0
  99. package/src/lib/repos/links.ts +353 -0
  100. package/src/lib/repos/load-manifest.ts +236 -0
  101. package/src/lib/repos/lock-service.ts +453 -0
  102. package/src/lib/repos/locked-namespace-resolver.ts +90 -0
  103. package/src/lib/repos/locked-recipes.ts +254 -0
  104. package/src/lib/repos/managed-layer.ts +422 -0
  105. package/src/lib/repos/namespace-resolver.ts +370 -0
  106. package/src/lib/repos/providers/base.ts +206 -0
  107. package/src/lib/repos/providers/git.ts +233 -0
  108. package/src/lib/repos/providers/github.ts +294 -0
  109. package/src/lib/repos/providers/gitlab.ts +263 -0
  110. package/src/lib/repos/providers/http.ts +102 -0
  111. package/src/lib/repos/providers/index-cache.ts +382 -0
  112. package/src/lib/repos/providers/index.ts +106 -0
  113. package/src/lib/repos/providers/local.ts +391 -0
  114. package/src/lib/repos/providers/provider.ts +401 -0
  115. package/src/lib/repos/recipe-config-layers.ts +287 -0
  116. package/src/lib/repos/recipe-targets.ts +223 -0
  117. package/src/lib/repos/ref-search.ts +46 -0
  118. package/src/lib/repos/ref.ts +513 -0
  119. package/src/lib/repos/reference-report.ts +122 -0
  120. package/src/lib/repos/release/bump.ts +161 -0
  121. package/src/lib/repos/release/git-state.ts +305 -0
  122. package/src/lib/repos/release/index-builder.ts +635 -0
  123. package/src/lib/repos/release/index.ts +16 -0
  124. package/src/lib/repos/release/plan.ts +512 -0
  125. package/src/lib/repos/release/submit-service.ts +496 -0
  126. package/src/lib/repos/release/tags.ts +243 -0
  127. package/src/lib/repos/release/validate.ts +463 -0
  128. package/src/lib/repos/resolver.ts +789 -0
  129. package/src/lib/repos/scaffold/index.ts +238 -0
  130. package/src/lib/repos/scaffold/templates.ts +415 -0
  131. package/src/lib/repos/seed.ts +414 -0
  132. package/src/lib/repos/store/contract.ts +64 -0
  133. package/src/lib/repos/store/hash.ts +114 -0
  134. package/src/lib/repos/store/recipe-store.ts +599 -0
  135. package/src/lib/repos/store/settings.ts +58 -0
  136. package/src/lib/repos/subscription-service.ts +2678 -0
  137. package/src/lib/repos/trust.ts +447 -0
  138. package/src/lib/settings.ts +546 -189
  139. package/src/lib/sous-home.ts +104 -0
  140. package/src/lib/state.ts +52 -20
  141. package/src/lib/vars/ask.ts +1152 -0
  142. package/src/lib/vars/definition-source.ts +252 -0
  143. package/src/lib/vars/display.ts +233 -0
  144. package/src/lib/vars/index.ts +18 -0
  145. package/src/lib/vars/ladder.ts +282 -0
  146. package/src/lib/vars/mappings.ts +265 -0
  147. package/src/lib/vars/names.ts +94 -0
  148. package/src/lib/vars/preanswers.ts +395 -0
  149. package/src/lib/vars/question-plan.ts +218 -0
  150. package/src/lib/vars/report.ts +228 -0
  151. package/src/lib/vars/safe-regex.ts +235 -0
  152. package/src/lib/vars/validate.ts +312 -0
  153. package/src/lib/watch-loop.ts +148 -0
  154. package/src/templating/init-liquid-engine.ts +58 -16
  155. package/src/utils/choice-prompt.ts +143 -0
  156. package/src/utils/command-errors.ts +186 -0
  157. package/src/utils/command-help.ts +45 -0
  158. package/src/utils/confirm-prompt.ts +110 -0
  159. package/src/utils/flags.ts +153 -0
  160. package/src/utils/formatting.ts +540 -55
  161. package/src/utils/prompts.ts +35 -1
  162. package/src/utils/sous-directory.ts +245 -0
  163. package/src/utils/table.ts +603 -0
  164. package/src/utils/value-prompt.ts +119 -0
  165. package/shared-prompts/_partials/resume-task.md +0 -51
  166. package/shared-prompts/_partials/sub-agent-delegation.md +0 -32
  167. package/shared-prompts/_partials/update-task-file.md +0 -52
  168. package/shared-prompts/memories/automated-browser-tasks/INDEX.tpl.md +0 -52
  169. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/SKILL.tpl.md +0 -102
  170. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/examples/auth-failure-handling.mjs +0 -81
  171. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/examples/chained-workflow.mjs +0 -126
  172. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/examples/simple-fetch.mjs +0 -92
  173. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/architecture.md +0 -61
  174. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/auth-and-sessions.md +0 -65
  175. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/ctx-api.md +0 -96
  176. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/installation.md +0 -104
  177. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/script-conventions.md +0 -243
  178. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/chrome-state.mjs +0 -148
  179. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/debug.mjs +0 -383
  180. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/debug.spec.mjs +0 -267
  181. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/eslint.config.mjs +0 -56
  182. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/harness.mjs +0 -169
  183. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/keyring.mjs +0 -59
  184. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/logger.mjs +0 -25
  185. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/params.mjs +0 -140
  186. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/run.mjs +0 -140
  187. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/settings.tpl.mjs +0 -1
  188. package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/utils.mjs +0 -185
  189. package/shared-prompts/skills/automated-browser-tasks/create-automated-browser-task/SKILL.tpl.md +0 -52
  190. package/shared-prompts/skills/automated-browser-tasks/running-automated-browser-tasks/SKILL.tpl.md +0 -59
  191. package/shared-prompts/skills/automated-browser-tasks/update-automated-browser-task/SKILL.tpl.md +0 -47
  192. package/shared-prompts/skills/control-flow/approve/SKILL.tpl.md +0 -26
  193. package/shared-prompts/skills/control-flow/opine/SKILL.tpl.md +0 -58
  194. package/shared-prompts/skills/control-flow/repeat/SKILL.tpl.md +0 -27
  195. package/shared-prompts/skills/control-flow/research/SKILL.tpl.md +0 -34
  196. package/shared-prompts/skills/sous-skills/about-sous/SKILL.tpl.md +0 -51
  197. package/shared-prompts/skills/task-files/about-task-files/SKILL.tpl.md +0 -122
  198. package/shared-prompts/skills/task-files/continue-task-in-new-branch/SKILL.tpl.md +0 -80
  199. package/shared-prompts/skills/task-files/go/SKILL.tpl.md +0 -14
  200. package/shared-prompts/skills/task-files/resume-task/SKILL.tpl.md +0 -13
  201. package/shared-prompts/skills/task-files/start-task/SKILL.tpl.md +0 -93
  202. package/shared-prompts/skills/task-files/update/SKILL.tpl.md +0 -14
  203. package/shared-prompts/skills/task-files/update-task-file/SKILL.tpl.md +0 -13
  204. /package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/substitutions.md +0 -0
  205. /package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-liquid-templates/references/liquid-filters.md +0 -0
@@ -1,58 +0,0 @@
1
- ---
2
- name: opine
3
- description: >
4
- Used to send an idea or proposal to the agent and have it repeat it back, then offer an honest
5
- analysis of viability, practicality, and overall merit. This is a discussion; no action is taken.
6
- argument-hint: idea or proposal
7
- disable-model-invocation: true
8
- ---
9
-
10
- New Idea/Proposal:
11
- $ARGUMENTS
12
-
13
- -
14
-
15
- ## CRITICAL: DO NOT ACT ON THIS IDEA
16
-
17
- This is a discussion, not a request. You must NOT take any action: do not write code, do not edit
18
- files, do not create branches, do not modify anything. The user is thinking out loud and wants
19
- your opinion. Your only output is text directed at the user.
20
-
21
- ## Research
22
-
23
- You may research the codebase and/or the web before responding if you think it would improve the
24
- accuracy of your analysis. Most ideas won't need this; use your judgement. When you do research,
25
- prefer sub-agents and run them in parallel where practical.
26
-
27
- ## Step 1: Repeat
28
-
29
- Repeat the idea or proposal back to me, in your own words and in a well-structured format so
30
- that I know our understandings are aligned.
31
-
32
- ## Step 2: Analyze
33
-
34
- After repeating the idea back, offer your analysis in three parts:
35
-
36
- 1. **Viability**: Is this idea technically feasible? Are there any fundamental blockers or
37
- constraints that would prevent it from working?
38
-
39
- 2. **Practicality**: Even if viable, is it practical? Would it require more steps, complexity,
40
- or hacky code than I'm probably anticipating? Are there hidden costs (maintenance burden,
41
- performance implications, edge cases)?
42
-
43
- 3. **Opinion**: Is this a good idea? Give your honest take on whether this is the right approach.
44
-
45
- ## Guidelines
46
-
47
- - **No action.** This cannot be overstated. Do not act on the idea. Only discuss it.
48
- - Be open and honest. Push back when you genuinely see problems.
49
- - "Yes, that seems like a great idea" is an entirely valid response. Do not manufacture
50
- objections or play devil's advocate just for the sake of it. If the idea is sound, say so.
51
- If it has real problems, say that too.
52
-
53
- ## Source for this Skill
54
-
55
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a
56
- template and the output file should not be edited directly.
57
-
58
- - Source Path: {{ sousTemplatePath }}
@@ -1,27 +0,0 @@
1
- ---
2
- name: repeat
3
- description: >
4
- Used to send an instruction to the agent and have the agent repeat the instruction back to you
5
- before acting, to ensure that you and the agent are aligned.
6
- argument-hint: instruction
7
- disable-model-invocation: true
8
- ---
9
-
10
- New Instruction:
11
- $ARGUMENTS
12
-
13
- -
14
-
15
- DO NOT ACT, yet. Instead, I want you to repeat the instruction back to me, in your own words and
16
- in a well-structured format so that I know our understandings are aligned. If I am satisfied with
17
- your explanation, I will approve you to begin acting.
18
-
19
- You may do a small amount of research before repeating the instruction back to me, if you think
20
- it would allow you to be more precise or accurate in your explanation.
21
-
22
- ## Source for this Skill
23
-
24
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a
25
- template and the output file should not be edited directly.
26
-
27
- - Source Path: {{ sousTemplatePath }}
@@ -1,34 +0,0 @@
1
- ---
2
- name: research
3
- description: Run a research task using background sub-agents
4
- user-invocable-only: true
5
- arguments-hint: what to research via background subagents
6
- ---
7
-
8
- Have a background sub-agent do the following:
9
- $ARGUMENTS
10
-
11
- ## Prefer Parallelism
12
-
13
- If possible, practical, and reasonable, break the task into multiple parts and assign each part to a sub-agent.
14
- Running background sub-agents in parallel usually makes things go much faster. Don't break tiny tasks up, though.
15
-
16
- Batch the independent dispatches into one message so they run at once. Opus by default; Sonnet only
17
- for rote extraction.
18
-
19
- ## Sub-Agent Prompts
20
-
21
- Per the sub-agent delegation pattern (`~sous-shared/_partials/sub-agent-delegation.md`), each prompt
22
- must be self-contained: the question to answer, the
23
- paths/IDs/facts needed, which skills to load, and the shape of the answer wanted. Sub-agents start
24
- fresh and cannot see this conversation.
25
-
26
- Each returns a concise summary, not a file dump. Do not fabricate or predict a pending result; wait
27
- for the notification. Synthesis and reporting to the user are orchestrator-only.
28
-
29
- ## Source for this Skill
30
-
31
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a
32
- template and the output file should not be edited directly.
33
-
34
- - Source Path: {{ sousTemplatePath }}
@@ -1,51 +0,0 @@
1
- ---
2
- name: about-sous
3
- description: >
4
- YOU MUST load this skill when you cannot edit a file in this project, are asked why
5
- a file keeps reverting, need to know where the source of truth for any managed file
6
- lives, or need to understand what this project's configuration system is.
7
- user-invocable: false
8
- ---
9
-
10
- # About Sous
11
-
12
- Sous (`xcv`) is a CLI tool that compiles markdown templates and manages output files
13
- for AI coding agents. It reads a central configuration, resolves variables, and
14
- copies or renders files to their destinations in this project.
15
-
16
- ## Files You Must Never Edit
17
-
18
- Sous manages certain files in this project by compiling them from a central source.
19
- **You must never edit these directly.** Your changes will be silently overwritten the
20
- next time Sous runs:
21
-
22
- - `.claude/` — Claude Code configuration, skills, and instructions
23
- - `.codex/` — Codex configuration and skills
24
- - `AGENTS.md` and `CLAUDE.md` — agent instruction files
25
- - Any file you did not create yourself in a designated source directory
26
-
27
- If you need to change something in one of these files, the change must be made at the
28
- source — in the central configuration this project uses with Sous.
29
-
30
- ## Where Your Skills Live
31
-
32
- Skills for this project live at `{{ skillsRoot }}`. That is the source directory Sous
33
- compiles from. Create and edit skills there — never in `.claude/skills/` or
34
- `.codex/skills/` directly.
35
-
36
- YOU MUST load `create-skill` when creating a new skill for this project.
37
-
38
- ## Sous's Shared Skill Bundles
39
-
40
- Sous ships shared skill bundles at `{{ sousRootPath }}/shared-prompts/skills/`, which is
41
- where the `about-sous`, `about-agent-skills` and `about-liquid-templates` skills you are
42
- reading came from. Edit them only in the sous repository itself, where they are the
43
- sources. Never edit a compiled copy of them inside a consuming project — that copy is
44
- build output and is overwritten on the next Sous run.
45
-
46
- ## Source for this Skill
47
-
48
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a template and
49
- the output file should not be edited directly.
50
-
51
- - Source Path: {{ sousTemplatePath }}
@@ -1,122 +0,0 @@
1
- ---
2
- name: about-task-files
3
- description: YOU MUST load this skill when working with task files — including creating, reading, updating, or archiving a task file, or any time you need to know where task files live.
4
- user-invocable: false
5
- ---
6
-
7
- A **task file** is a Markdown document that tracks a unit of work across one or more chat sessions. It is the single source of truth for what has been done, what remains, and what decisions were made.
8
-
9
- ## Who Reads and Writes It
10
-
11
- Per the sub-agent delegation pattern (`~sous-shared/_partials/sub-agent-delegation.md`), reading and
12
- writing task files is delegated work: the orchestrator supplies the facts and decisions, and a
13
- sub-agent loads this skill and does the edit.
14
- Sub-agents start with fresh context and cannot see the chat conversation, so a delegating prompt
15
- must state any fact that exists only in the conversation. Anything the sub-agent can gather itself
16
- (branch name, commits, changed files, error output) should be gathered by the sub-agent.
17
-
18
- ## Location and Naming
19
-
20
- Task files live at:
21
- ```
22
- {{ taskFileRoot }}/[branch-name].md
23
- ```
24
-
25
- The filename mirrors the full git branch name — including any `/` separators as path separators:
26
- - Branch `{{ featureBranchPrefix }}{{ ticketIdExample }}-some-feature` → `{{ taskFileRoot }}/{{ featureBranchPrefix }}{{ ticketIdExample }}-some-feature.md`
27
-
28
- To find the current task file: run `git status`, take the branch name, construct the path above.
29
-
30
- **If the file is not found:** run a fresh `git status` to confirm the branch name before concluding it doesn't exist.
31
-
32
- ## Archive Location
33
-
34
- Completed task files are archived at:
35
- ```
36
- {{ taskFileRoot }}/archive/[branch-name].md
37
- ```
38
-
39
- The path structure mirrors the task file location — just under `archive/`.
40
-
41
- ## Completion Procedure
42
-
43
- When the user confirms a task is 100% complete:
44
- 1. Update the task file with the final status
45
- 2. Move it to `{{ taskFileRoot }}/archive/[branch-name].md` (create subdirectories as needed)
46
- 3. Switch to the project's main development branch and follow its branch-switching procedures
47
-
48
- ## File Format
49
-
50
- ```markdown
51
- # Task: [Feature/Fix Description]
52
-
53
- **Branch:** `{{ featureBranchPrefix }}{{ ticketIdExample }}-feature-name`
54
- **Status:** In Progress - Phase 2 Complete
55
- **Started:** YYYY-MM-DD
56
- **Updated:** YYYY-MM-DD
57
-
58
- ## Overview
59
- [Brief description of the task objective]
60
-
61
- ## Current Status
62
- - Phase 1: Complete
63
- - Phase 2: Complete
64
- - Phase 3: In Progress
65
-
66
- ## Recent Progress
67
- [What was accomplished in the most recent session]
68
-
69
- ## Decisions Made
70
- [Technical and process decisions, with brief rationale]
71
-
72
- ## Remaining Work
73
- - [ ] Task with context
74
- - [ ] Another task
75
-
76
- ## Pending Issues
77
- [Unresolved problems, blockers, open questions]
78
-
79
- ## Key Learnings
80
- [Patterns, discoveries, gotchas worth remembering]
81
-
82
- ## Commits Made
83
- - `abc123f` - description
84
-
85
- ## Files Modified
86
- - /absolute/path/to/File.ts:45 - what changed and why
87
-
88
- ## Testing URLs
89
- - http://localhost:5173/path/to/page
90
-
91
- ## Unresolved Errors
92
- [Test failures, build errors, TypeScript errors — with paths and line numbers]
93
- ```
94
-
95
- ## Style Guidelines
96
-
97
- - No emojis or emoticons
98
- - Concise but not aggressively compressed — important information must not be lost
99
- - Wrap long lines at 120 characters
100
- - Absolute paths with line numbers for file references (not ranges)
101
- - Use `file:/absolute/path/to/File.ts:45` format for clickable links (two slashes, not three)
102
-
103
- ## File Size
104
-
105
- Task files must not exceed **1,000 lines**. When approaching the limit, condense:
106
- - Completed phases (keep summary, drop detail)
107
- - Historical context no longer relevant to upcoming work
108
- - Information less important to immediate next steps
109
-
110
- Always preserve in full: current active work, immediate next steps, unresolved issues, recent learnings, recently modified files.
111
-
112
- ## Task Plan Structure
113
-
114
- When drafting a task plan, segregate work by architectural layer. Work one layer at a time and
115
- commit at least once per layer.
116
-
117
- ## Source for this Skill
118
-
119
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a template and
120
- the output file should not be edited directly.
121
-
122
- - Source Path: {{ sousTemplatePath }}
@@ -1,80 +0,0 @@
1
- ---
2
- name: continue-task-in-new-branch
3
- description: YOU MUST load this skill when an MR has been merged and remaining work needs to continue in a new branch — including "continue this work in a new branch", "create a follow-up branch", "split this into another MR", "move remaining work to a new branch".
4
- ---
5
-
6
- The agent performing this work MUST load `about-task-files`.
7
-
8
- ## Delegation
9
-
10
- Per the sub-agent delegation pattern (`~sous-shared/_partials/sub-agent-delegation.md`), the
11
- orchestrator does the git branch work itself (steps 1, 2,
12
- and 6, which change the working tree it is in) and delegates the task file writing (steps 3, 4, 5)
13
- to one Opus sub-agent. That sub-agent needs the old and new branch names, the remaining-work list,
14
- and the patterns/gotchas to carry forward; sub-agents cannot see this conversation, so state them in
15
- the prompt.
16
-
17
- ## Steps
18
-
19
- ### 1. Prepare for Branch Transition
20
-
21
- Before switching branches, ensure:
22
- - Current branch is fully pushed to the remote
23
- - All important context is documented in the current task file (load `update-task-file` if needed)
24
- - The MR has been merged or is ready to close
25
-
26
- ### 2. Create the New Branch
27
-
28
- Name the new branch using the original name plus a letter suffix (`-b`, `-c`, etc.):
29
- ```bash
30
- git checkout <main-development-branch>
31
- git pull origin <main-development-branch>
32
- git checkout -b {{ featureBranchPrefix }}{{ ticketIdExample }}-description-b
33
- ```
34
-
35
- ### 3. Create the New Task File
36
-
37
- Create `{{ taskFileRoot }}/{{ featureBranchPrefix }}{{ ticketIdExample }}-description-b.md` with:
38
- - **Task Overview**: brief description and connection to the previous MR
39
- - **Remaining Work**: clear list of unfinished tasks with enough context to understand each item independently
40
- - **Key Patterns and Learnings**: essential patterns from the previous branch worth carrying forward
41
- - **Important Notes**: critical gotchas, blockers, or dependencies
42
-
43
- Do NOT include: completed tasks (unless essential context), resolved MR comments, detailed change history.
44
-
45
- ### 4. Update the Old Task File
46
-
47
- Add a "Work Continuation" section to the old task file before archiving:
48
-
49
- ```markdown
50
- ## Work Continuation
51
- Remaining work has been moved to:
52
- - **Branch**: {{ featureBranchPrefix }}{{ ticketIdExample }}-description-b
53
- - **Task File**: {{ taskFileRoot }}/{{ featureBranchPrefix }}{{ ticketIdExample }}-description-b.md
54
- - **Scope**: [brief description of remaining work]
55
-
56
- This task file is now archived — work in the associated MR has been completed and merged.
57
- ```
58
-
59
- ### 5. Archive the Old Task File
60
-
61
- ```bash
62
- mv {{ taskFileRoot }}/{{ featureBranchPrefix }}{{ ticketIdExample }}-description-a.md \
63
- {{ taskFileRoot }}/archive/{{ featureBranchPrefix }}{{ ticketIdExample }}-description-a.md
64
- ```
65
-
66
- Create the archive subdirectory if it doesn't exist.
67
-
68
- ### 6. Clean Up
69
-
70
- ```bash
71
- # Delete the old local branch
72
- git branch -D {{ featureBranchPrefix }}{{ ticketIdExample }}-description-a
73
- ```
74
-
75
- ## Source for this Skill
76
-
77
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a template and
78
- the output file should not be edited directly.
79
-
80
- - Source Path: {{ sousTemplatePath }}
@@ -1,14 +0,0 @@
1
- ---
2
- name: go
3
- description: Resume work on the current branch task — load the task file, analyze progress, identify next steps, and present options.
4
- disable-model-invocation: true
5
- ---
6
-
7
- @~sous-shared/_partials/resume-task.md
8
-
9
- ## Source for this Skill
10
-
11
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a template and
12
- the output file should not be edited directly.
13
-
14
- - Source Path: {{ sousTemplatePath }}
@@ -1,13 +0,0 @@
1
- ---
2
- name: resume-task
3
- description: YOU MUST load this skill when the user is resuming work on an existing task — including "resume work", "continue from where we left off", "what's the status?", "what should we do next?", "read the task file", or when starting a new session on a branch that has an existing task file.
4
- ---
5
-
6
- @~sous-shared/_partials/resume-task.md
7
-
8
- ## Source for this Skill
9
-
10
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a template and
11
- the output file should not be edited directly.
12
-
13
- - Source Path: {{ sousTemplatePath }}
@@ -1,93 +0,0 @@
1
- ---
2
- name: start-task
3
- description: >
4
- YOU MUST load this skill when the user wants to start work on a new task — including "start a
5
- new task", "let's work on {{ ticketIdExample }}", "begin a new task", "create a task file", or
6
- any request to begin fresh work on a ticket.
7
- ---
8
-
9
- The agent performing this work MUST load `about-task-files` and any "about" skills related to the
10
- project's task management system (e.g. Jira, Linear, etc.).
11
-
12
- ## Delegation
13
-
14
- Per the sub-agent delegation pattern (`~sous-shared/_partials/sub-agent-delegation.md`):
15
-
16
- - **Orchestrator-only:** every step that needs the user (picking the ticket, confirming the branch
17
- name, approving the plan) and the git branch operations, which change the working tree the
18
- orchestrator is in.
19
- - **Delegated:** pulling ticket info (step 2) and writing the task file (step 4), each to a
20
- background sub-agent. Dispatch them in parallel when independent.
21
- - Sub-agents return links, questions, and confirmations to the orchestrator, which relays them to
22
- the user.
23
-
24
- ## Steps
25
-
26
- ### 1. Identify the Ticket
27
-
28
- Look for a ticket identifier (e.g. `{{ ticketIdExample }}`) in the user's message. If none is
29
- provided:
30
- - Ask the user to specify one, or offer to help them pick one
31
- - Once a ticket number is confirmed, proceed
32
-
33
- ### 2. Pull Ticket Info
34
-
35
- Delegate to a sub-agent: fetch basic ticket info from the project's task management system and
36
- report it back. If the ticket doesn't exist, go back to step 1. If unassigned, ask the user if they
37
- want to assign it to themselves. If the status indicates it hasn't been started, ask if they want to
38
- transition it to an active state. Those questions are orchestrator-only; the sub-agent reports the
39
- assignee and status and the orchestrator asks.
40
-
41
- After transitioning, ensure the issue is visible on the team's board. If the project ships an
42
- "about" skill for its task management system (e.g. `about-jira`, `about-linear`), follow its
43
- board-move instructions for the board type and target status.
44
-
45
- ### 3. Check for an Existing Branch
46
-
47
- Look for local branches that include the ticket number:
48
- ```bash
49
- git branch | grep {{ ticketIdExample }}
50
- ```
51
-
52
- If found, confirm it's the right branch with the user (there may be multiple), then:
53
- ```bash
54
- git checkout [branch-name]
55
- git pull origin [branch-name]
56
- ```
57
- Then go to step 4.
58
-
59
- ### 3a. Create a New Branch
60
-
61
- If no existing branch is found:
62
-
63
- 1. Switch to the project's main development branch and pull latest
64
- 2. Resolve branch name: `{{ featureBranchPrefix }}{{ ticketPrefix }}[ticket-number]-[short-description]`
65
- derived from the ticket title. **Confirm with the user before creating.**
66
- 3. Create and switch to the branch:
67
- ```bash
68
- git checkout -b [branch-name]
69
- ```
70
-
71
- ### 4. Load or Create the Task File
72
-
73
- Check for an existing task file at `{{ taskFileRoot }}/[branch-name].md`.
74
-
75
- - **Found**: read it, note what's already captured, and continue to step 5
76
- - **Not found**: delegate to a sub-agent, which collects full ticket info (summary, description,
77
- status, assignee, related issues, comments, story points, sub-tasks, any linked MRs or commits)
78
- and creates the task file using the format in `about-task-files`. Include relevant testing URLs
79
- with real record IDs so URLs are actually clickable. Use `file:/absolute/path:line` format for
80
- source file links.
81
-
82
- ### 5. Plan and Start
83
-
84
- The orchestrator drafts the task plan, organized by layer (see `about-task-files` for layer
85
- ordering), and asks the user if they want to begin work. Recording the approved plan in the task
86
- file is delegated; pass the plan text to the sub-agent verbatim.
87
-
88
- ## Source for this Skill
89
-
90
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a
91
- template and the output file should not be edited directly.
92
-
93
- - Source Path: {{ sousTemplatePath }}
@@ -1,14 +0,0 @@
1
- ---
2
- name: update
3
- description: Update the task file before ending the session or when context is running low.
4
- disable-model-invocation: true
5
- ---
6
-
7
- @~sous-shared/_partials/update-task-file.md
8
-
9
- ## Source for this Skill
10
-
11
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a template and
12
- the output file should not be edited directly.
13
-
14
- - Source Path: {{ sousTemplatePath }}
@@ -1,13 +0,0 @@
1
- ---
2
- name: update-task-file
3
- description: YOU MUST load this skill when context is running low, the user is ending the session, or they say "update the task file", "document our progress", "save our state", "prepare for new session", or invoke the !update command.
4
- ---
5
-
6
- @~sous-shared/_partials/update-task-file.md
7
-
8
- ## Source for this Skill
9
-
10
- This skill was pulled from the `sous` project's "shared skills" library. It was compiled from a template and
11
- the output file should not be edited directly.
12
-
13
- - Source Path: {{ sousTemplatePath }}