yet-another-agentic-workflow 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -0
- package/dist/adapters.d.ts +43 -0
- package/dist/adapters.js +191 -0
- package/dist/adapters.js.map +1 -0
- package/dist/architect.d.ts +38 -0
- package/dist/architect.js +275 -0
- package/dist/architect.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +580 -0
- package/dist/cli.js.map +1 -0
- package/dist/feature.d.ts +30 -0
- package/dist/feature.js +344 -0
- package/dist/feature.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +26 -0
- package/dist/init.js +255 -0
- package/dist/init.js.map +1 -0
- package/dist/installer.d.ts +64 -0
- package/dist/installer.js +365 -0
- package/dist/installer.js.map +1 -0
- package/dist/observability.d.ts +37 -0
- package/dist/observability.js +200 -0
- package/dist/observability.js.map +1 -0
- package/dist/parser.d.ts +6 -0
- package/dist/parser.js +166 -0
- package/dist/parser.js.map +1 -0
- package/dist/persistence.d.ts +83 -0
- package/dist/persistence.js +279 -0
- package/dist/persistence.js.map +1 -0
- package/dist/providers.d.ts +14 -0
- package/dist/providers.js +27 -0
- package/dist/providers.js.map +1 -0
- package/dist/review.d.ts +29 -0
- package/dist/review.js +66 -0
- package/dist/review.js.map +1 -0
- package/dist/schema.d.ts +2 -0
- package/dist/schema.js +44 -0
- package/dist/schema.js.map +1 -0
- package/dist/skills.d.ts +24 -0
- package/dist/skills.js +210 -0
- package/dist/skills.js.map +1 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
- package/schemas/agent.schema.json +37 -0
- package/schemas/context.schema.json +13 -0
- package/schemas/eval.schema.json +26 -0
- package/schemas/hook.schema.json +29 -0
- package/schemas/skill.schema.json +23 -0
- package/schemas/state.schema.json +14 -0
- package/schemas/workflow.schema.json +34 -0
- package/schemas/yaaw.schema.json +58 -0
- package/skills/clarify/SKILL.md +14 -0
- package/skills/code-review/SKILL.md +29 -0
- package/skills/slice-work/SKILL.md +15 -0
- package/skills/spec/SKILL.md +21 -0
- package/skills/tdd/SKILL.md +25 -0
- package/templates/instructions/managed-block.md +17 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://yaaw.dev/schemas/state.schema.json",
|
|
4
|
+
"title": "YAAW state",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["name", "path"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"name": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
10
|
+
"path": { "type": "string", "minLength": 1 },
|
|
11
|
+
"description": { "type": "string", "minLength": 1 },
|
|
12
|
+
"durable": { "type": "boolean", "default": true }
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://yaaw.dev/schemas/workflow.schema.json",
|
|
4
|
+
"title": "YAAW workflow",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["name", "steps"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"name": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
10
|
+
"description": { "type": "string", "minLength": 1 },
|
|
11
|
+
"steps": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"minItems": 1,
|
|
14
|
+
"items": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": false,
|
|
17
|
+
"required": ["id", "uses"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
20
|
+
"uses": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"pattern": "^(skill|agent|hook|eval|workflow|context|state):[a-z][a-z0-9-]*$"
|
|
23
|
+
},
|
|
24
|
+
"needs": {
|
|
25
|
+
"type": "array",
|
|
26
|
+
"uniqueItems": true,
|
|
27
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" }
|
|
28
|
+
},
|
|
29
|
+
"with": { "type": "object" }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://yaaw.dev/schemas/yaaw.schema.json",
|
|
4
|
+
"title": "YAAW project definition",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"version",
|
|
9
|
+
"project",
|
|
10
|
+
"skills",
|
|
11
|
+
"agents",
|
|
12
|
+
"hooks",
|
|
13
|
+
"evals",
|
|
14
|
+
"workflows",
|
|
15
|
+
"context",
|
|
16
|
+
"state"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"version": { "const": 1 },
|
|
20
|
+
"project": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"additionalProperties": false,
|
|
23
|
+
"required": ["name"],
|
|
24
|
+
"properties": {
|
|
25
|
+
"name": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
26
|
+
"description": { "type": "string", "minLength": 1 }
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"skills": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": { "$ref": "https://yaaw.dev/schemas/skill.schema.json" }
|
|
32
|
+
},
|
|
33
|
+
"agents": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": { "$ref": "https://yaaw.dev/schemas/agent.schema.json" }
|
|
36
|
+
},
|
|
37
|
+
"hooks": {
|
|
38
|
+
"type": "array",
|
|
39
|
+
"items": { "$ref": "https://yaaw.dev/schemas/hook.schema.json" }
|
|
40
|
+
},
|
|
41
|
+
"evals": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": { "$ref": "https://yaaw.dev/schemas/eval.schema.json" }
|
|
44
|
+
},
|
|
45
|
+
"workflows": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"items": { "$ref": "https://yaaw.dev/schemas/workflow.schema.json" }
|
|
48
|
+
},
|
|
49
|
+
"context": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"items": { "$ref": "https://yaaw.dev/schemas/context.schema.json" }
|
|
52
|
+
},
|
|
53
|
+
"state": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"items": { "$ref": "https://yaaw.dev/schemas/state.schema.json" }
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clarify
|
|
3
|
+
description: Resolve only the unknowns that materially change behavior, scope,
|
|
4
|
+
or the public testing seam.
|
|
5
|
+
---
|
|
6
|
+
# Clarify
|
|
7
|
+
|
|
8
|
+
Resolve ambiguity from evidence before asking questions.
|
|
9
|
+
|
|
10
|
+
1. Read the request, relevant conversation, repository instructions, domain documentation, ADRs, code, and nearby tests. Use the project's domain vocabulary.
|
|
11
|
+
2. Separate facts that the repository can answer from unknowns that change observable behavior, scope, data contracts, or irreversible decisions.
|
|
12
|
+
3. State the requested user-visible outcome and identify the highest existing public seam through which it can be verified. Prefer an existing seam; propose a new one only when the behavior cannot be observed otherwise.
|
|
13
|
+
4. Ask one focused question only when competing answers would produce meaningfully different implementations and no repository evidence resolves them. Otherwise record the smallest reasonable assumption.
|
|
14
|
+
5. Produce resolved decisions, assumptions, the selected public seam, remaining unknowns, and the next action. Stop when specification work is unblocked.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
description: Review a fixed change set against either the specification or
|
|
4
|
+
engineering standards without letting one axis mask the other.
|
|
5
|
+
---
|
|
6
|
+
# Code review
|
|
7
|
+
|
|
8
|
+
Review one axis only. The workflow invokes separate spec and standards reviewers so their evidence and verdicts remain independent.
|
|
9
|
+
|
|
10
|
+
## Establish the review set
|
|
11
|
+
|
|
12
|
+
1. Pin the fixed point from the supplied diff, commit, branch, transaction artifact, or persisted workflow record. Confirm that the change set is non-empty.
|
|
13
|
+
2. Inspect changed code and recorded verification evidence. Do not expand the review into unrelated pre-existing code.
|
|
14
|
+
3. Load only the evidence for the assigned axis.
|
|
15
|
+
|
|
16
|
+
## Spec axis
|
|
17
|
+
|
|
18
|
+
Compare the change with the originating specification and acceptance criteria. Find missing or partial behavior, behavior that appears implemented incorrectly, and unrequested scope creep. Cite the criterion and changed file or hunk for every finding. If no specification exists, report that the axis was not assessable rather than inventing requirements.
|
|
19
|
+
|
|
20
|
+
## Standards axis
|
|
21
|
+
|
|
22
|
+
Apply documented repository standards first; they override generic heuristics. Then use this compact smell baseline as judgement, not automatic failure: mysterious names, duplicated logic, data clumps or primitive obsession, repeated conditionals, shotgun surgery or divergent change, speculative generality, message chains, and middle-man abstractions. Skip concerns already enforced by successful tooling.
|
|
23
|
+
|
|
24
|
+
## Verdict
|
|
25
|
+
|
|
26
|
+
- Report each finding with a stable code, severity, file or hunk, evidence, and the smallest corrective direction.
|
|
27
|
+
- Distinguish documented violations from judgement calls.
|
|
28
|
+
- Return explicit `PASS` with no findings, or `FAIL` with at least one evidence-backed finding.
|
|
29
|
+
- Remain read-only: do not repair the implementation from the reviewer role.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slice-work
|
|
3
|
+
description: Turn a specification into tracer-bullet slices with acceptance
|
|
4
|
+
criteria, testing seams, and explicit blocking edges.
|
|
5
|
+
---
|
|
6
|
+
# Slice work
|
|
7
|
+
|
|
8
|
+
Build a dependency graph of tracer-bullet vertical slices, not a layer-by-layer task list.
|
|
9
|
+
|
|
10
|
+
1. Make each slice deliver one narrow but complete user-visible behavior through every relevant layer. A completed slice must be demonstrable or verifiable on its own and fit within one fresh working context.
|
|
11
|
+
2. Give each slice an ID, title, delivered behavior, acceptance criteria, public verification seam, verification command or method, and `blockedBy` IDs.
|
|
12
|
+
3. Keep blocking edges real: a slice depends only on work that must exist before it can start. Order blockers first and identify the current frontier—all slices whose blockers are complete.
|
|
13
|
+
4. Prefer the smallest end-to-end slice first. Add a prefactoring slice only when it independently keeps verification green and materially makes the behavior change easier.
|
|
14
|
+
5. Treat wide mechanical refactors as the exception. Use expand–contract: add the new form beside the old, migrate bounded batches while verification stays green, then remove the old form after all migrations.
|
|
15
|
+
6. Avoid predicted file paths and speculative implementation detail. Preserve the specification's domain language and observable boundaries.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec
|
|
3
|
+
description: Synthesize repository evidence and resolved decisions into
|
|
4
|
+
behavior, seams, and independently verifiable acceptance criteria.
|
|
5
|
+
---
|
|
6
|
+
# Specification
|
|
7
|
+
|
|
8
|
+
Synthesize what is already known; do not restart the requirements interview. Use repository domain vocabulary and respect applicable ADRs.
|
|
9
|
+
|
|
10
|
+
## Required specification
|
|
11
|
+
|
|
12
|
+
- **Problem and goal:** the user's problem and the outcome that resolves it.
|
|
13
|
+
- **User-visible solution:** numbered user stories or scenarios that describe actors, behavior, and benefit.
|
|
14
|
+
- **Expected behavior:** normal flow, consequential failure states, and externally visible state transitions.
|
|
15
|
+
- **Implementation decisions:** durable contracts, schema or API decisions, and architectural constraints. Avoid speculative file paths and code snippets.
|
|
16
|
+
- **Testing decisions:** select the highest existing public seam that can prove the behavior, name prior test patterns to follow, and justify any new seam.
|
|
17
|
+
- **Constraints and non-goals:** explicit boundaries that prevent scope drift.
|
|
18
|
+
- **Acceptance criteria:** independently verifiable observations with an unambiguous source of truth.
|
|
19
|
+
- **Important decisions and unknowns:** preserve rationale and identify only unresolved items that can still change delivery.
|
|
20
|
+
|
|
21
|
+
Prefer fewer, higher-leverage seams. Tests should observe behavior through public interfaces and remain valid when internals are refactored.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd
|
|
3
|
+
description: Deliver one vertical slice at a time with public-interface tests,
|
|
4
|
+
boundary-only mocks, and recorded red-green evidence.
|
|
5
|
+
---
|
|
6
|
+
# Test-driven development
|
|
7
|
+
|
|
8
|
+
Work one acceptance criterion and one pre-agreed public seam at a time. Read relevant domain documentation and ADRs so test names and interfaces use repository language.
|
|
9
|
+
|
|
10
|
+
## Test quality
|
|
11
|
+
|
|
12
|
+
- Verify behavior through the public interface at the selected seam. Tests should survive internal refactoring and read as executable specifications.
|
|
13
|
+
- Derive expected results from an independent source of truth: a known literal, worked example, contract, or acceptance criterion.
|
|
14
|
+
- Avoid **implementation-coupled** tests of private methods, internal collaborators, call order, or incidental storage.
|
|
15
|
+
- Avoid **tautological** assertions that recompute the result with the same logic as production code.
|
|
16
|
+
- Mock only at system boundaries such as external APIs, time, randomness, or an unavailable external store. Prefer real controlled dependencies and never mock code the project owns merely to make a test easy.
|
|
17
|
+
|
|
18
|
+
## Red-green-refactor cycle
|
|
19
|
+
|
|
20
|
+
1. Confirm the active criterion and public seam. Write one focused behavioral test.
|
|
21
|
+
2. Run it and record RED: exact command, relevant failure, and non-zero status. A test that passes immediately does not prove the change.
|
|
22
|
+
3. Implement the smallest production change that produces GREEN. Do not anticipate later slices or add speculative generality.
|
|
23
|
+
4. Run the focused test and record GREEN. Refactor only the code exercised by the slice, without changing behavior, and keep the focused test green.
|
|
24
|
+
5. Repeat with the next behavior learned from the previous cycle; do not write a horizontal batch of imagined tests up front.
|
|
25
|
+
6. Run relevant typechecking and focused tests during work, then the full required verification suite once the slice is complete. Record commands, outputs, and exit statuses.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- yaaw:start -->
|
|
2
|
+
|
|
3
|
+
## Yet Another Agentic Workflow
|
|
4
|
+
|
|
5
|
+
This repository uses YAAW engineering skills.
|
|
6
|
+
|
|
7
|
+
Use the installed skills when their procedure matches the task.
|
|
8
|
+
|
|
9
|
+
For meaningful implementation work:
|
|
10
|
+
|
|
11
|
+
- resolve consequential ambiguity before coding;
|
|
12
|
+
- establish observable acceptance criteria;
|
|
13
|
+
- prefer small independently verifiable slices;
|
|
14
|
+
- use feedback loops rather than guessing;
|
|
15
|
+
- verify before declaring work complete.
|
|
16
|
+
|
|
17
|
+
<!-- yaaw:end -->
|