@rasensio/aidlc-content 1.8.1 → 1.9.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/guidance/content-operations.md +71 -0
- package/package.json +1 -1
- package/skills/00-overview.md +38 -0
- package/skills/01-getting-started.md +12 -0
- package/skills/83-add-skill.md +127 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-operations
|
|
3
|
+
description: Verification steps for the output of repeatable operational skills
|
|
4
|
+
---
|
|
5
|
+
# Content Operations
|
|
6
|
+
|
|
7
|
+
Verification steps for operational skills — skills that perform a repeatable
|
|
8
|
+
operation on a system rather than change the system itself.
|
|
9
|
+
|
|
10
|
+
This file is **not** registered in `index.yaml` and is not a project guidance
|
|
11
|
+
layer. It is a source read directly from the content package by
|
|
12
|
+
`aidlc add skill`, which copies the delimited region below verbatim into every
|
|
13
|
+
generated skill body. Two consequences for anyone editing it:
|
|
14
|
+
|
|
15
|
+
- **Do not use `{{...}}` placeholder syntax anywhere in this file.** The text is
|
|
16
|
+
inlined literally, so a placeholder would ship unresolved to users.
|
|
17
|
+
- Edits reach existing skills only when they are re-emitted
|
|
18
|
+
(`aidlc add skill --re-emit`). Generated skills are snapshots, pinned by the
|
|
19
|
+
`content_version` field in their frontmatter.
|
|
20
|
+
|
|
21
|
+
<!-- aidlc:verify-steps:begin -->
|
|
22
|
+
## Verification
|
|
23
|
+
|
|
24
|
+
Before reporting this operation as complete, work through every check below.
|
|
25
|
+
Report which ones you ran and what they returned. If a check does not apply,
|
|
26
|
+
say so explicitly rather than skipping it silently.
|
|
27
|
+
|
|
28
|
+
### 1. Factual review of generated claims
|
|
29
|
+
|
|
30
|
+
- Re-read anything you asserted as fact — names, dates, versions, numbers,
|
|
31
|
+
behaviour of other systems. Confirm each against a source you actually
|
|
32
|
+
consulted in this session, not against recollection.
|
|
33
|
+
- Where a claim could not be verified, mark it as unverified in the output
|
|
34
|
+
rather than leaving it to read as established fact.
|
|
35
|
+
- Check that quoted or paraphrased material still means what the source meant.
|
|
36
|
+
|
|
37
|
+
### 2. Schema and frontmatter validation
|
|
38
|
+
|
|
39
|
+
- Confirm required fields are present, correctly named, and correctly typed.
|
|
40
|
+
- Confirm no field was invented that the schema does not define.
|
|
41
|
+
- Validate against the project's own schema or validator where one exists,
|
|
42
|
+
rather than eyeballing the shape.
|
|
43
|
+
|
|
44
|
+
### 3. The artifact builds
|
|
45
|
+
|
|
46
|
+
- Run the project's build for the affected area and confirm it exits cleanly.
|
|
47
|
+
- Run the relevant tests, linter, and type checker. Report actual output; do not
|
|
48
|
+
assert success you did not observe.
|
|
49
|
+
- If the build cannot be run in this environment, say so plainly and name what
|
|
50
|
+
remains unverified.
|
|
51
|
+
|
|
52
|
+
### 4. Links and referenced paths resolve
|
|
53
|
+
|
|
54
|
+
- Confirm every file path referenced in the output exists.
|
|
55
|
+
- Confirm internal links point at real anchors, routes, or documents.
|
|
56
|
+
- For external URLs, confirm they were reachable when checked, or mark them as
|
|
57
|
+
unchecked.
|
|
58
|
+
|
|
59
|
+
### Reporting
|
|
60
|
+
|
|
61
|
+
State plainly what passed, what failed, and what you could not check. A partial
|
|
62
|
+
result reported accurately is more useful than a clean summary that hides a gap.
|
|
63
|
+
<!-- aidlc:verify-steps:end -->
|
|
64
|
+
|
|
65
|
+
## Why verification is built in
|
|
66
|
+
|
|
67
|
+
An operational skill runs repeatedly, often unattended, and its output usually
|
|
68
|
+
lands directly in a repository or a published surface. The failure mode is not a
|
|
69
|
+
crash — it is plausible-looking output that nobody checked. Embedding these steps
|
|
70
|
+
in the skill body means the check travels with the operation rather than depending
|
|
71
|
+
on whoever happens to invoke it.
|
package/package.json
CHANGED
package/skills/00-overview.md
CHANGED
|
@@ -28,6 +28,44 @@ The AIDLC defines seven ordered phases. Not all apply to every task:
|
|
|
28
28
|
| Standard | Requirements | Requirements through Deployment |
|
|
29
29
|
| Micro | Implementation | Implementation and Testing only |
|
|
30
30
|
|
|
31
|
+
## Lifecycle or Skill?
|
|
32
|
+
|
|
33
|
+
**The rule: lifecycle for changes to the system; skills for repeatable operations of the system.**
|
|
34
|
+
|
|
35
|
+
Not every task belongs in a lifecycle instance. Ask which of the two a request is:
|
|
36
|
+
|
|
37
|
+
- **A change to the system** — a new capability, a fix, a refactor, anything that alters what the
|
|
38
|
+
system can do. This goes through the lifecycle: phases, artifacts, gates.
|
|
39
|
+
- **A repeatable operation of the system** — running a chore the system already supports, over and
|
|
40
|
+
over, with the same steps each time. This belongs in a **skill**, not an instance.
|
|
41
|
+
|
|
42
|
+
Worked example, a blog application:
|
|
43
|
+
|
|
44
|
+
| Request | Which | Why |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| "Add a series feature so posts can belong to a series" | **Lifecycle** | The system cannot do this yet. New capability → requirements, design, tests. |
|
|
47
|
+
| "Publish a post about last week's release" | **Skill** | The system already supports posts. Same steps every time. Wrapping each post in phases is ceremony. |
|
|
48
|
+
|
|
49
|
+
Running an operational skill is **never** a lifecycle instance. Do not create an instance, claim, or
|
|
50
|
+
phase artifacts to publish a post, rotate a log, or regenerate a report.
|
|
51
|
+
|
|
52
|
+
### The escape hatch
|
|
53
|
+
|
|
54
|
+
An operation sometimes reveals a missing capability — you go to publish a post and discover the system
|
|
55
|
+
has no way to mark it as a draft. When that happens, the *operation* stops being the work and the
|
|
56
|
+
missing capability re-enters the lifecycle as a normal instance. Capture it with **aidlc-idea** or start
|
|
57
|
+
an instance; do not quietly extend the skill into building the feature.
|
|
58
|
+
|
|
59
|
+
### Quality mechanisms live inside the skill
|
|
60
|
+
|
|
61
|
+
An operational skill's output still needs checking — facts verified, schema validated, the build run,
|
|
62
|
+
links resolved. Those checks belong **inside the skill's own instructions**, not as lifecycle phases
|
|
63
|
+
wrapped around each invocation. A skill that carries its own verification produces checked output every
|
|
64
|
+
time it runs; a skill that relies on a review phase produces checked output only when someone remembers
|
|
65
|
+
to run one.
|
|
66
|
+
|
|
67
|
+
`aidlc add skill` scaffolds an operational skill with verification steps already embedded.
|
|
68
|
+
|
|
31
69
|
## State Protocol
|
|
32
70
|
|
|
33
71
|
All state lives in `.aidlc/state/<instance-name>/`. Read and write state as follows:
|
|
@@ -41,6 +41,17 @@ Create an instance from the template that fits:
|
|
|
41
41
|
- Larger feature needing design and review → `full-feature`
|
|
42
42
|
- Something tiny (just code + test) → `micro-task`
|
|
43
43
|
|
|
44
|
+
### "This is a chore I do over and over — does it need an instance?"
|
|
45
|
+
|
|
46
|
+
No. The rule is: **lifecycle for changes to the system; skills for repeatable operations of the system.** Publishing
|
|
47
|
+
a post, rotating a log, regenerating a report — the system already supports these, so they belong in a
|
|
48
|
+
skill rather than a lifecycle instance. See "Lifecycle or Skill?" in **aidlc-overview** for the rule, the
|
|
49
|
+
escape hatch when an operation reveals a missing capability, and a worked example.
|
|
50
|
+
|
|
51
|
+
Run `aidlc add skill <name>` to scaffold one with verification steps already built in. If you would
|
|
52
|
+
rather author the skill through the lifecycle, use the `micro-task` template — the deliverable is the
|
|
53
|
+
skill file plus its check.
|
|
54
|
+
|
|
44
55
|
### "How do I explore an idea or do research?"
|
|
45
56
|
|
|
46
57
|
Create an instance from the `spike` template. This gives you Ideation + Requirements phases only — no implementation pressure.
|
|
@@ -91,6 +102,7 @@ If not installed yet, run `npx @rasensio/aidlc init` in a terminal. Installation
|
|
|
91
102
|
| Build something complex | `full-feature` | Full (with review gates) |
|
|
92
103
|
| Just write code + test | `micro-task` | Micro |
|
|
93
104
|
| Research / explore | `spike` | Ideation + Requirements |
|
|
105
|
+
| Author an operational skill | `micro-task` | Micro (or just `aidlc add skill`) |
|
|
94
106
|
|
|
95
107
|
Template definitions (phases and required artifacts) live in the content package and can be overridden per-project under `.aidlc/templates/`.
|
|
96
108
|
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aidlc-add-skill
|
|
3
|
+
description: Turns a described repeatable operation into an app-owned operational skill with built-in verification
|
|
4
|
+
phase: implementation
|
|
5
|
+
priority: 54
|
|
6
|
+
---
|
|
7
|
+
# Operational Skill Authoring
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Turn a plain-language description of a repeatable operation into a working skill in the user's repo —
|
|
12
|
+
one canonical body plus platform-native packaging, with verification steps already embedded.
|
|
13
|
+
|
|
14
|
+
**Authoring a skill is not performing the operation.** You are writing instructions for later, not
|
|
15
|
+
running them now. Never execute the described operation while authoring it: do not publish the post, do
|
|
16
|
+
not run the deployment, do not send the message. If the user wants the operation performed, that is a
|
|
17
|
+
separate request made after the skill exists.
|
|
18
|
+
|
|
19
|
+
## When to Use This
|
|
20
|
+
|
|
21
|
+
The user describes something they do **repeatedly** with the **same steps** — publishing a post,
|
|
22
|
+
rotating credentials, regenerating a report, cutting a release note.
|
|
23
|
+
|
|
24
|
+
Before generating anything, apply the rule from **aidlc-overview**: *lifecycle for changes to the
|
|
25
|
+
system; skills for repeatable operations of the system.*
|
|
26
|
+
|
|
27
|
+
## Instructions
|
|
28
|
+
|
|
29
|
+
### 1. Check it is really an operation, not a system change
|
|
30
|
+
|
|
31
|
+
If the description is really a new capability — the system cannot do this yet, and doing it once requires
|
|
32
|
+
building something — say so plainly and offer the alternative:
|
|
33
|
+
|
|
34
|
+
> "This sounds like a change to the system rather than a repeatable operation of it: <reason>. That
|
|
35
|
+
> usually belongs in the lifecycle. I can capture it as an idea (`aidlc-idea`) or start an instance
|
|
36
|
+
> instead. Or if you would rather have the skill anyway, say so and I will generate it."
|
|
37
|
+
|
|
38
|
+
**If the user disagrees, generate the skill.** A false positive must never be a dead end — the user knows
|
|
39
|
+
their workflow better than this heuristic does.
|
|
40
|
+
|
|
41
|
+
Signals it is a **system change**: "add support for", "make it possible to", "we can't currently".
|
|
42
|
+
Signals it is an **operation**: "every time I", "the steps are always", "I keep having to".
|
|
43
|
+
|
|
44
|
+
### 2. Elicit what the skill needs
|
|
45
|
+
|
|
46
|
+
Gather these before generating. Ask only for what is missing or genuinely ambiguous — do not
|
|
47
|
+
interrogate the user for fields you can infer from what they already said.
|
|
48
|
+
|
|
49
|
+
- **Name** — lowercase, hyphens, starts with a letter. The `aidlc-` prefix is reserved for framework
|
|
50
|
+
skills and will be rejected. Suggest one derived from the description and confirm it.
|
|
51
|
+
- **Description** — one line: what operation this performs.
|
|
52
|
+
- **Trigger** — when this skill should be used, in the user's own words.
|
|
53
|
+
- **Steps** — the concrete operation, as ordered markdown. This is the substance; get it specific.
|
|
54
|
+
Vague steps produce a skill that cannot be followed.
|
|
55
|
+
- **Conventions it must honour** — paths, naming schemes, frontmatter fields, index files to update,
|
|
56
|
+
commands to run. These are what make the difference between a skill that works in *this* repo and
|
|
57
|
+
generic advice.
|
|
58
|
+
- **Paths** — repo-relative paths the operation touches. These are checked for existence by the
|
|
59
|
+
skill's own smoke test, so list real ones.
|
|
60
|
+
|
|
61
|
+
### 3. Never put credential values in the skill
|
|
62
|
+
|
|
63
|
+
Environment variable names and secret-manager references are legitimate and should be **kept**:
|
|
64
|
+
`$GITHUB_TOKEN`, `op://vault/ci/token`, `arn:aws:secretsmanager:...`. Actual token values must not
|
|
65
|
+
appear. If the user pastes one, tell them, leave it out, and reference it by variable name instead.
|
|
66
|
+
|
|
67
|
+
Generation redacts detected credential values automatically before showing you a preview, but that
|
|
68
|
+
detection is best-effort — do not rely on it in place of not asking for secrets.
|
|
69
|
+
|
|
70
|
+
### 4. Generate
|
|
71
|
+
|
|
72
|
+
Run the command. It renders a preview, asks for confirmation, and writes nothing until confirmed:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
aidlc add skill <name> \
|
|
76
|
+
--description "<one line>" \
|
|
77
|
+
--steps "<the ordered steps, as markdown>" \
|
|
78
|
+
--trigger "<when to use it>" \
|
|
79
|
+
--paths <path> [<path>...]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Add `--dry-run` first if the user wants to see the output without a prompt.
|
|
83
|
+
|
|
84
|
+
The command owns the write path: it validates the name, redacts credentials before rendering the
|
|
85
|
+
preview, asks for confirmation, writes all files or none, runs a smoke check, and registers the skill in
|
|
86
|
+
the knowledge graph. Do not reimplement any of that by writing the files yourself — the confirmation is a
|
|
87
|
+
security boundary, because a generated skill is instructions an agent will later execute.
|
|
88
|
+
|
|
89
|
+
### 5. Report what happened
|
|
90
|
+
|
|
91
|
+
Tell the user which files were written, whether the smoke check passed, and whether knowledge-graph
|
|
92
|
+
registration succeeded. A registration warning is not a failure — the skill still works.
|
|
93
|
+
|
|
94
|
+
If the smoke check reports a missing declared path, that usually means a `--paths` entry was wrong, not
|
|
95
|
+
that the skill is broken. Offer to re-run with corrected paths.
|
|
96
|
+
|
|
97
|
+
## Other Modes
|
|
98
|
+
|
|
99
|
+
- **`aidlc add skill --check [<name>]`** — verify existing skills parse, carry verification text, and
|
|
100
|
+
that their declared paths exist. Run this if a skill has been hand-edited.
|
|
101
|
+
- **`aidlc add skill --re-emit [<name>]`** — re-package for the currently configured platforms and
|
|
102
|
+
refresh the verification text from the installed content package. Use it after adding a platform to
|
|
103
|
+
`.aidlc/config.yaml`, after upgrading the content package, or to repair a skill whose knowledge-graph
|
|
104
|
+
entry is missing. It never rewrites the user's own steps.
|
|
105
|
+
- **`aidlc add skill <name> --overwrite`** — replace an existing skill. Generation refuses a name
|
|
106
|
+
collision by default rather than silently overwriting.
|
|
107
|
+
|
|
108
|
+
## What Not to Do
|
|
109
|
+
|
|
110
|
+
- Do not create a lifecycle instance to run a generated skill. Running an operation is never an instance.
|
|
111
|
+
- Do not author the skill by writing `.aidlc/operational-skills/<name>.md` directly. That bypasses name
|
|
112
|
+
validation, redaction, atomic writes, and the confirmation gate.
|
|
113
|
+
- Do not remove or edit the verification section in a generated skill. It is machine-managed, delimited
|
|
114
|
+
by `<!-- aidlc:verify-steps:begin -->` / `<!-- aidlc:verify-steps:end -->`, and `--re-emit` refreshes
|
|
115
|
+
it. Content outside those markers is yours to edit freely.
|
|
116
|
+
- Do not use the `aidlc-` prefix. It is reserved and enforced.
|
|
117
|
+
|
|
118
|
+
## Exit Criteria
|
|
119
|
+
|
|
120
|
+
- The skill's canonical body and platform files are written (on confirmation), the smoke check has run,
|
|
121
|
+
and its result was reported — **or**
|
|
122
|
+
- The user declined, and the working tree is unchanged — **or**
|
|
123
|
+
- The request was a system change and the user chose the lifecycle instead.
|
|
124
|
+
|
|
125
|
+
## Guidance
|
|
126
|
+
|
|
127
|
+
{{context:style-guide}}
|