@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.
- package/README.md +115 -35
- package/bin/run.js +10 -1
- package/docs/markdown/README.md +27 -0
- package/docs/markdown/_sidebar.md +18 -0
- package/docs/markdown/commands.md +308 -0
- package/docs/markdown/config-discovery.md +74 -0
- package/docs/markdown/config-inspection.md +69 -0
- package/docs/markdown/config-layers.md +92 -0
- package/docs/markdown/config-variables.md +79 -0
- package/docs/markdown/configuration.md +71 -0
- package/docs/markdown/design-principles.md +59 -0
- package/docs/markdown/repositories-authoring.md +409 -0
- package/docs/markdown/repositories-consuming.md +580 -0
- package/docs/markdown/repositories-file-formats.md +1084 -0
- package/docs/markdown/repositories-variables.md +387 -0
- package/docs/markdown/repositories.md +303 -0
- package/docs/markdown/skill-categories.md +58 -0
- package/package.json +72 -8
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/SKILL.tpl.md +20 -20
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/examples/about-something.md +2 -2
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/examples/do-something.md +1 -1
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/advanced-patterns.md +6 -6
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/commands.md +5 -5
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/frontmatter.md +3 -3
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-liquid-templates/SKILL.tpl.md +40 -25
- package/recipes/core/sous-skills/skills/about-sous/SKILL.tpl.md +70 -0
- package/recipes/core/sous-skills/skills/about-sous-configuration/SKILL.tpl.md +75 -0
- package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/create-skill/SKILL.tpl.md +8 -9
- package/recipes/core/sous-skills/sous.recipe.yaml +45 -0
- package/sous.config.schema.json +337 -0
- package/src/base-command.ts +220 -67
- package/src/commands/build.ts +150 -73
- package/src/commands/clear.ts +23 -15
- package/src/commands/compile.ts +74 -16
- package/src/commands/config/get.ts +110 -0
- package/src/commands/config/show.ts +32 -0
- package/src/commands/config/validate.ts +53 -0
- package/src/commands/help.ts +46 -0
- package/src/commands/launch.ts +36 -14
- package/src/commands/lock/rebuild.ts +241 -0
- package/src/commands/lock/show.ts +115 -0
- package/src/commands/namespace/list.ts +117 -0
- package/src/commands/namespace/show.ts +110 -0
- package/src/commands/prune.ts +3 -11
- package/src/commands/recipe/list.ts +95 -0
- package/src/commands/recipe/show.ts +301 -0
- package/src/commands/repo/add.ts +145 -0
- package/src/commands/repo/gc.ts +172 -0
- package/src/commands/repo/init.ts +136 -0
- package/src/commands/repo/link.ts +500 -0
- package/src/commands/repo/list.ts +179 -0
- package/src/commands/repo/release.ts +625 -0
- package/src/commands/repo/remove.ts +193 -0
- package/src/commands/repo/search.ts +189 -0
- package/src/commands/repo/submit.ts +133 -0
- package/src/commands/repo/unlink.ts +147 -0
- package/src/commands/subscription/add.ts +285 -0
- package/src/commands/subscription/list.ts +129 -0
- package/src/commands/subscription/remove.ts +181 -0
- package/src/commands/vars/ask.ts +374 -0
- package/src/commands/vars/index.ts +79 -0
- package/src/commands/vars/list.ts +67 -0
- package/src/commands/vars/show.ts +77 -0
- package/src/config-command.ts +30 -0
- package/src/lib/build-service.ts +206 -54
- package/src/lib/config-discovery.ts +220 -27
- package/src/lib/config-inspect.ts +145 -0
- package/src/lib/config-kernel.mjs +377 -0
- package/src/lib/config-schema.ts +361 -0
- package/src/lib/env-file.ts +328 -0
- package/src/lib/env-local.ts +18 -1
- package/src/lib/errors.ts +32 -0
- package/src/lib/include-resolver.ts +108 -15
- package/src/lib/interactive.ts +165 -0
- package/src/lib/markdown-compiler.ts +118 -37
- package/src/lib/package-info.ts +25 -0
- package/src/lib/pid-service.ts +32 -21
- package/src/lib/refs/find.ts +589 -0
- package/src/lib/refs/index.ts +12 -0
- package/src/lib/refs/pick.ts +147 -0
- package/src/lib/refs/scopes.ts +61 -0
- package/src/lib/repos/catalog-display.ts +116 -0
- package/src/lib/repos/catalog-inputs.ts +160 -0
- package/src/lib/repos/catalog.ts +722 -0
- package/src/lib/repos/core-recipe.ts +105 -0
- package/src/lib/repos/defaults.ts +175 -0
- package/src/lib/repos/formats/common.ts +389 -0
- package/src/lib/repos/formats/index-file.ts +215 -0
- package/src/lib/repos/formats/links-map.ts +96 -0
- package/src/lib/repos/formats/lockfile.ts +167 -0
- package/src/lib/repos/formats/patterns.ts +57 -0
- package/src/lib/repos/formats/recipe-manifest.ts +395 -0
- package/src/lib/repos/formats/repo-manifest.ts +88 -0
- package/src/lib/repos/formats/store-entry.ts +84 -0
- package/src/lib/repos/freshness.ts +208 -0
- package/src/lib/repos/git-clone.ts +312 -0
- package/src/lib/repos/identity.ts +89 -0
- package/src/lib/repos/index.ts +58 -0
- package/src/lib/repos/links.ts +353 -0
- package/src/lib/repos/load-manifest.ts +236 -0
- package/src/lib/repos/lock-service.ts +453 -0
- package/src/lib/repos/locked-namespace-resolver.ts +90 -0
- package/src/lib/repos/locked-recipes.ts +254 -0
- package/src/lib/repos/managed-layer.ts +422 -0
- package/src/lib/repos/namespace-resolver.ts +370 -0
- package/src/lib/repos/providers/base.ts +206 -0
- package/src/lib/repos/providers/git.ts +233 -0
- package/src/lib/repos/providers/github.ts +294 -0
- package/src/lib/repos/providers/gitlab.ts +263 -0
- package/src/lib/repos/providers/http.ts +102 -0
- package/src/lib/repos/providers/index-cache.ts +382 -0
- package/src/lib/repos/providers/index.ts +106 -0
- package/src/lib/repos/providers/local.ts +391 -0
- package/src/lib/repos/providers/provider.ts +401 -0
- package/src/lib/repos/recipe-config-layers.ts +287 -0
- package/src/lib/repos/recipe-targets.ts +223 -0
- package/src/lib/repos/ref-search.ts +46 -0
- package/src/lib/repos/ref.ts +513 -0
- package/src/lib/repos/reference-report.ts +122 -0
- package/src/lib/repos/release/bump.ts +161 -0
- package/src/lib/repos/release/git-state.ts +305 -0
- package/src/lib/repos/release/index-builder.ts +635 -0
- package/src/lib/repos/release/index.ts +16 -0
- package/src/lib/repos/release/plan.ts +512 -0
- package/src/lib/repos/release/submit-service.ts +496 -0
- package/src/lib/repos/release/tags.ts +243 -0
- package/src/lib/repos/release/validate.ts +463 -0
- package/src/lib/repos/resolver.ts +789 -0
- package/src/lib/repos/scaffold/index.ts +238 -0
- package/src/lib/repos/scaffold/templates.ts +415 -0
- package/src/lib/repos/seed.ts +414 -0
- package/src/lib/repos/store/contract.ts +64 -0
- package/src/lib/repos/store/hash.ts +114 -0
- package/src/lib/repos/store/recipe-store.ts +599 -0
- package/src/lib/repos/store/settings.ts +58 -0
- package/src/lib/repos/subscription-service.ts +2678 -0
- package/src/lib/repos/trust.ts +447 -0
- package/src/lib/settings.ts +546 -189
- package/src/lib/sous-home.ts +104 -0
- package/src/lib/state.ts +52 -20
- package/src/lib/vars/ask.ts +1152 -0
- package/src/lib/vars/definition-source.ts +252 -0
- package/src/lib/vars/display.ts +233 -0
- package/src/lib/vars/index.ts +18 -0
- package/src/lib/vars/ladder.ts +282 -0
- package/src/lib/vars/mappings.ts +265 -0
- package/src/lib/vars/names.ts +94 -0
- package/src/lib/vars/preanswers.ts +395 -0
- package/src/lib/vars/question-plan.ts +218 -0
- package/src/lib/vars/report.ts +228 -0
- package/src/lib/vars/safe-regex.ts +235 -0
- package/src/lib/vars/validate.ts +312 -0
- package/src/lib/watch-loop.ts +148 -0
- package/src/templating/init-liquid-engine.ts +58 -16
- package/src/utils/choice-prompt.ts +143 -0
- package/src/utils/command-errors.ts +186 -0
- package/src/utils/command-help.ts +45 -0
- package/src/utils/confirm-prompt.ts +110 -0
- package/src/utils/flags.ts +153 -0
- package/src/utils/formatting.ts +540 -55
- package/src/utils/prompts.ts +35 -1
- package/src/utils/sous-directory.ts +245 -0
- package/src/utils/table.ts +603 -0
- package/src/utils/value-prompt.ts +119 -0
- package/shared-prompts/_partials/resume-task.md +0 -51
- package/shared-prompts/_partials/sub-agent-delegation.md +0 -32
- package/shared-prompts/_partials/update-task-file.md +0 -52
- package/shared-prompts/memories/automated-browser-tasks/INDEX.tpl.md +0 -52
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/SKILL.tpl.md +0 -102
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/examples/auth-failure-handling.mjs +0 -81
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/examples/chained-workflow.mjs +0 -126
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/examples/simple-fetch.mjs +0 -92
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/architecture.md +0 -61
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/auth-and-sessions.md +0 -65
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/ctx-api.md +0 -96
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/installation.md +0 -104
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/references/script-conventions.md +0 -243
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/chrome-state.mjs +0 -148
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/debug.mjs +0 -383
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/debug.spec.mjs +0 -267
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/eslint.config.mjs +0 -56
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/harness.mjs +0 -169
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/keyring.mjs +0 -59
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/logger.mjs +0 -25
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/params.mjs +0 -140
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/run.mjs +0 -140
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/settings.tpl.mjs +0 -1
- package/shared-prompts/skills/automated-browser-tasks/about-automated-browser-tasks/scripts/utils.mjs +0 -185
- package/shared-prompts/skills/automated-browser-tasks/create-automated-browser-task/SKILL.tpl.md +0 -52
- package/shared-prompts/skills/automated-browser-tasks/running-automated-browser-tasks/SKILL.tpl.md +0 -59
- package/shared-prompts/skills/automated-browser-tasks/update-automated-browser-task/SKILL.tpl.md +0 -47
- package/shared-prompts/skills/control-flow/approve/SKILL.tpl.md +0 -26
- package/shared-prompts/skills/control-flow/opine/SKILL.tpl.md +0 -58
- package/shared-prompts/skills/control-flow/repeat/SKILL.tpl.md +0 -27
- package/shared-prompts/skills/control-flow/research/SKILL.tpl.md +0 -34
- package/shared-prompts/skills/sous-skills/about-sous/SKILL.tpl.md +0 -51
- package/shared-prompts/skills/task-files/about-task-files/SKILL.tpl.md +0 -122
- package/shared-prompts/skills/task-files/continue-task-in-new-branch/SKILL.tpl.md +0 -80
- package/shared-prompts/skills/task-files/go/SKILL.tpl.md +0 -14
- package/shared-prompts/skills/task-files/resume-task/SKILL.tpl.md +0 -13
- package/shared-prompts/skills/task-files/start-task/SKILL.tpl.md +0 -93
- package/shared-prompts/skills/task-files/update/SKILL.tpl.md +0 -14
- package/shared-prompts/skills/task-files/update-task-file/SKILL.tpl.md +0 -13
- /package/{shared-prompts/skills/sous-skills → recipes/core/sous-skills/skills}/about-agent-skills/references/substitutions.md +0 -0
- /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 }}
|
|
File without changes
|