@deftai/directive-content 0.55.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/.agents/skills/deft/SKILL.md +6 -0
- package/.agents/skills/deft-directive-article-review/SKILL.md +11 -0
- package/.agents/skills/deft-directive-build/SKILL.md +10 -0
- package/.agents/skills/deft-directive-cost/SKILL.md +12 -0
- package/.agents/skills/deft-directive-debug/SKILL.md +13 -0
- package/.agents/skills/deft-directive-gh-arch/SKILL.md +11 -0
- package/.agents/skills/deft-directive-gh-slice/SKILL.md +10 -0
- package/.agents/skills/deft-directive-glossary/SKILL.md +10 -0
- package/.agents/skills/deft-directive-interview/SKILL.md +9 -0
- package/.agents/skills/deft-directive-pre-pr/SKILL.md +9 -0
- package/.agents/skills/deft-directive-refinement/SKILL.md +10 -0
- package/.agents/skills/deft-directive-release/SKILL.md +12 -0
- package/.agents/skills/deft-directive-review-cycle/SKILL.md +10 -0
- package/.agents/skills/deft-directive-setup/SKILL.md +10 -0
- package/.agents/skills/deft-directive-swarm/SKILL.md +10 -0
- package/.agents/skills/deft-directive-sync/SKILL.md +9 -0
- package/.agents/skills/deft-directive-triage/SKILL.md +9 -0
- package/.agents/skills/deft-directive-write-skill/SKILL.md +9 -0
- package/LICENSE.md +22 -0
- package/QUICK-START.md +167 -0
- package/UPGRADING.md +517 -0
- package/coding/build-output.md +28 -0
- package/coding/coding.md +235 -0
- package/coding/debugging.md +110 -0
- package/coding/holzmann.md +96 -0
- package/coding/hygiene.md +127 -0
- package/coding/security.md +158 -0
- package/coding/testing.md +162 -0
- package/coding/toolchain.md +44 -0
- package/commands.md +300 -0
- package/context/context.md +57 -0
- package/context/deterministic-split.md +67 -0
- package/context/examples.md +26 -0
- package/context/fractal-summaries.md +69 -0
- package/context/long-horizon.md +46 -0
- package/context/spec-deltas.md +177 -0
- package/context/tool-design.md +34 -0
- package/context/working-memory.md +62 -0
- package/contracts/boundary-maps.md +65 -0
- package/contracts/deterministic-questions.md +59 -0
- package/contracts/hierarchy.md +77 -0
- package/conventions/content-manifest.json +399 -0
- package/conventions/machine-generated-banner.md +130 -0
- package/conventions/references.md +120 -0
- package/conventions/rule-ownership.json +382 -0
- package/conventions/task-caching.md +43 -0
- package/conventions/vbrief-filenames.md +70 -0
- package/deployments/README.md +37 -0
- package/deployments/agentuity/README.md +138 -0
- package/deployments/agentuity/via-cli.md +380 -0
- package/deployments/agentuity/via-cloud.md +425 -0
- package/deployments/agentuity/via-github-actions.md +664 -0
- package/deployments/agentuity/via-gravity-network.md +606 -0
- package/deployments/agentuity/via-vpc.md +607 -0
- package/deployments/aws/README.md +38 -0
- package/deployments/aws/via-app-runner.md +612 -0
- package/deployments/aws/via-ecs-fargate.md +561 -0
- package/deployments/aws/via-elastic-beanstalk.md +628 -0
- package/deployments/aws/via-lambda.md +649 -0
- package/deployments/azure/README.md +37 -0
- package/deployments/azure/via-aks.md +390 -0
- package/deployments/azure/via-app-service.md +564 -0
- package/deployments/azure/via-container-apps.md +599 -0
- package/deployments/azure/via-functions.md +552 -0
- package/deployments/cloud-gov/README.md +63 -0
- package/deployments/cloud-gov/agents/compliance-docs.md +154 -0
- package/deployments/cloud-gov/agents.md +39 -0
- package/deployments/cloud-gov/cicd.md +64 -0
- package/deployments/cloud-gov/deployment.md +150 -0
- package/deployments/cloud-gov/logging.md +43 -0
- package/deployments/cloud-gov/manifest.md +121 -0
- package/deployments/cloud-gov/overview.md +58 -0
- package/deployments/cloud-gov/security.md +46 -0
- package/deployments/cloud-gov/services.md +72 -0
- package/deployments/cloud-gov/upstream/README.md +18 -0
- package/deployments/cloudflare/README.md +33 -0
- package/deployments/cloudflare/via-dashboard.md +83 -0
- package/deployments/cloudflare/via-git.md +90 -0
- package/deployments/cloudflare/via-github-actions.md +185 -0
- package/deployments/cloudflare/via-terraform.md +157 -0
- package/deployments/cloudflare/via-wrangler.md +165 -0
- package/deployments/fly-io/README.md +37 -0
- package/deployments/fly-io/via-dockerfile.md +648 -0
- package/deployments/fly-io/via-flyctl.md +653 -0
- package/deployments/fly-io/via-github-actions.md +695 -0
- package/deployments/fly-io/via-multi-region.md +598 -0
- package/deployments/google/README.md +34 -0
- package/deployments/google/via-app-engine.md +42 -0
- package/deployments/google/via-cloud-functions.md +23 -0
- package/deployments/google/via-cloud-run.md +330 -0
- package/deployments/google/via-gke.md +23 -0
- package/deployments/netlify/README.md +99 -0
- package/deployments/netlify/via-cli.md +17 -0
- package/deployments/netlify/via-functions.md +19 -0
- package/deployments/netlify/via-git.md +25 -0
- package/deployments/vercel/README.md +90 -0
- package/deployments/vercel/via-api.md +16 -0
- package/deployments/vercel/via-cli.md +17 -0
- package/deployments/vercel/via-git.md +24 -0
- package/docs/BROWNFIELD.md +179 -0
- package/docs/getting-started.md +137 -0
- package/docs/good-agents-md.md +137 -0
- package/events/README.md +89 -0
- package/events/event-record.schema.json +26 -0
- package/events/registry.json +166 -0
- package/events/registry.schema.json +71 -0
- package/glossary.md +145 -0
- package/incidents/README.md +81 -0
- package/incidents/_template.md +38 -0
- package/interfaces/cli.md +104 -0
- package/interfaces/rest.md +212 -0
- package/interfaces/tui.md +242 -0
- package/interfaces/web.md +123 -0
- package/languages/6502-DASM.md +132 -0
- package/languages/c.md +235 -0
- package/languages/commands.md +23 -0
- package/languages/cpp.md +132 -0
- package/languages/csharp.md +259 -0
- package/languages/dart.md +183 -0
- package/languages/delphi.md +218 -0
- package/languages/elixir.md +208 -0
- package/languages/go.md +78 -0
- package/languages/java.md +278 -0
- package/languages/javascript.md +163 -0
- package/languages/julia.md +175 -0
- package/languages/kotlin.md +193 -0
- package/languages/markdown.md +168 -0
- package/languages/mermaid.md +146 -0
- package/languages/officejs.md +392 -0
- package/languages/python.md +209 -0
- package/languages/r.md +163 -0
- package/languages/rust.md +216 -0
- package/languages/sql.md +216 -0
- package/languages/swift.md +153 -0
- package/languages/typescript.md +132 -0
- package/languages/vba.md +279 -0
- package/languages/vhdl.md +180 -0
- package/languages/visual-basic.md +151 -0
- package/languages/zig.md +196 -0
- package/meta/SOUL.md +27 -0
- package/meta/code-field.md +44 -0
- package/meta/morals.md +40 -0
- package/meta/philosophy.md +39 -0
- package/meta/project.md +49 -0
- package/meta/ralph.md +223 -0
- package/meta/security.md +80 -0
- package/meta/versioning.md +326 -0
- package/package.json +22 -0
- package/packs/lessons/lessons-pack-0.1.json +553 -0
- package/packs/patterns/patterns-pack-0.1.json +57 -0
- package/packs/rules/rules-pack-0.1.json +4767 -0
- package/packs/skills/skills-pack-0.1.json +262 -0
- package/packs/strategies/strategies-pack-0.1.json +167 -0
- package/packs/swarm-spec/swarm-spec-pack-0.1.json +17 -0
- package/patterns/executor-layer-credentials.md +227 -0
- package/patterns/llm-app.md +156 -0
- package/patterns/multi-agent.md +278 -0
- package/patterns/prompt-assembly-layer-ordering.md +154 -0
- package/patterns/role-as-overlay.md +179 -0
- package/platforms/2600.md +137 -0
- package/platforms/unity.md +329 -0
- package/references/composer-skill-porting.md +152 -0
- package/references/cost-models.md +163 -0
- package/references/ip-risk.md +246 -0
- package/references/plain-english-ux.md +275 -0
- package/resilience/context-pruning.md +67 -0
- package/resilience/continue-here.md +62 -0
- package/scm/changelog.md +276 -0
- package/scm/git.md +139 -0
- package/scm/github.md +265 -0
- package/secrets/.gitkeep +0 -0
- package/skills/deft-build/SKILL.md +20 -0
- package/skills/deft-directive-article-review/SKILL.md +156 -0
- package/skills/deft-directive-build/SKILL.md +302 -0
- package/skills/deft-directive-cost/SKILL.md +201 -0
- package/skills/deft-directive-debug/SKILL.md +140 -0
- package/skills/deft-directive-decompose/SKILL.md +96 -0
- package/skills/deft-directive-gh-arch/SKILL.md +160 -0
- package/skills/deft-directive-gh-slice/SKILL.md +199 -0
- package/skills/deft-directive-glossary/SKILL.md +118 -0
- package/skills/deft-directive-interview/SKILL.md +528 -0
- package/skills/deft-directive-pre-pr/SKILL.md +131 -0
- package/skills/deft-directive-probe/SKILL.md +127 -0
- package/skills/deft-directive-refinement/SKILL.md +403 -0
- package/skills/deft-directive-release/SKILL.md +266 -0
- package/skills/deft-directive-review-cycle/SKILL.md +401 -0
- package/skills/deft-directive-setup/SKILL.md +717 -0
- package/skills/deft-directive-swarm/SKILL.md +989 -0
- package/skills/deft-directive-sync/SKILL.md +288 -0
- package/skills/deft-directive-triage/SKILL.md +137 -0
- package/skills/deft-directive-write-skill/SKILL.md +169 -0
- package/skills/deft-interview/SKILL.md +16 -0
- package/skills/deft-pre-pr/SKILL.md +16 -0
- package/skills/deft-review-cycle/SKILL.md +16 -0
- package/skills/deft-roadmap-refresh/SKILL.md +16 -0
- package/skills/deft-setup/SKILL.md +20 -0
- package/skills/deft-swarm/SKILL.md +16 -0
- package/skills/deft-sync/SKILL.md +16 -0
- package/strategies/README.md +83 -0
- package/strategies/artifact-guards.md +85 -0
- package/strategies/bdd.md +115 -0
- package/strategies/brownfield.md +7 -0
- package/strategies/discuss.md +129 -0
- package/strategies/emit-hints.md +69 -0
- package/strategies/enterprise.md +193 -0
- package/strategies/interview.md +551 -0
- package/strategies/map.md +179 -0
- package/strategies/probe.md +151 -0
- package/strategies/rapid.md +155 -0
- package/strategies/research.md +155 -0
- package/strategies/roadmap.md +9 -0
- package/strategies/speckit.md +437 -0
- package/strategies/v0-20-contract.md +134 -0
- package/strategies/yolo.md +169 -0
- package/swarm/swarm.md +300 -0
- package/templates/COST-ESTIMATE.md +114 -0
- package/templates/PULL_REQUEST_TEMPLATE.md +35 -0
- package/templates/agent-prompt-preamble.md +409 -0
- package/templates/agents-entry.md +211 -0
- package/templates/agents-entry.placeholders.md +75 -0
- package/templates/embed.go +20 -0
- package/templates/embed_test.go +36 -0
- package/templates/make-spec-example.md +9 -0
- package/templates/make-spec.md +246 -0
- package/templates/project.md.template +52 -0
- package/templates/specification.md +1 -0
- package/templates/swarm-greptile-poller-prompt.md +556 -0
- package/templates/user.md.template +31 -0
- package/tools/RWLDL.md +80 -0
- package/tools/greptile.md +141 -0
- package/tools/installer.md +23 -0
- package/tools/taskfile-migration.md +32 -0
- package/tools/taskfile.md +185 -0
- package/tools/telemetry.md +285 -0
- package/vbrief/schemas/cache-meta.schema.json +137 -0
- package/vbrief/schemas/candidates.schema.json +130 -0
- package/vbrief/schemas/codebase-map.schema.json +213 -0
- package/vbrief/schemas/lessons-pack.schema.json +134 -0
- package/vbrief/schemas/patterns-pack.schema.json +84 -0
- package/vbrief/schemas/rules-pack.schema.json +105 -0
- package/vbrief/schemas/skills-pack.schema.json +94 -0
- package/vbrief/schemas/slices.schema.json +87 -0
- package/vbrief/schemas/strategies-pack.schema.json +89 -0
- package/vbrief/schemas/swarm-spec-pack.schema.json +84 -0
- package/vbrief/schemas/vbrief-core.schema.json +1022 -0
- package/vbrief/vbrief.md +684 -0
- package/verification/integration.md +76 -0
- package/verification/plan-checking.md +85 -0
- package/verification/uat.md +60 -0
- package/verification/verification.md +117 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Context Pruning
|
|
2
|
+
|
|
3
|
+
Fresh context windows for every task — eliminating context rot.
|
|
4
|
+
|
|
5
|
+
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
6
|
+
|
|
7
|
+
**⚠️ See also**: [context/context.md](../context/context.md) | [context/fractal-summaries.md](../context/fractal-summaries.md) | [core/glossary.md](../glossary.md)
|
|
8
|
+
|
|
9
|
+
> Adapted from [GSD](https://github.com/gsd-build/get-shit-done) context pruning model.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Core Principle
|
|
14
|
+
|
|
15
|
+
Context rot is the silent killer of multi-task agent work. By task 3–4 in a sequence, the context window is saturated with stale tool output, dead-end debugging, and outdated file reads. The model doesn't know what's current — reasoning quality drops as signal-to-noise collapses.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Task Anchoring
|
|
20
|
+
|
|
21
|
+
- ~ Each task gets a **logical anchor point** in the conversation
|
|
22
|
+
- ~ Before each task, prune prior tasks' tool calls, intermediate reads, and debugging traces
|
|
23
|
+
- ! The only things in context for a new task: **current task plan** + **curated upstream summaries**
|
|
24
|
+
- ⊗ Carrying forward stale file reads, old terminal output, or resolved debugging traces
|
|
25
|
+
|
|
26
|
+
## Zero Discovery Calls
|
|
27
|
+
|
|
28
|
+
- ~ Pre-assemble everything the agent needs **before** the task starts:
|
|
29
|
+
- Task plan (goal, steps, acceptance criteria)
|
|
30
|
+
- Compressed summaries from dependency features (see [fractal-summaries.md](../context/fractal-summaries.md))
|
|
31
|
+
- Locked decisions from interview phase (see [strategies/discuss.md](../strategies/discuss.md))
|
|
32
|
+
- Continue checkpoint data if resuming (see [resilience/continue-here.md](./continue-here.md))
|
|
33
|
+
- ~ If the agent must `grep` for project structure or search for prior decisions, the context assembly is broken
|
|
34
|
+
- ⊗ Spending tokens on "where am I, what exists, what was decided" — that's context assembly's job
|
|
35
|
+
|
|
36
|
+
## Token Budget
|
|
37
|
+
|
|
38
|
+
- ~ Cap injected summary context at **~2500 tokens**
|
|
39
|
+
- ~ If dependency chain is too large, drop oldest/least relevant summaries first
|
|
40
|
+
- ~ Priority: release summaries > feature summaries > task summaries
|
|
41
|
+
- ! Never exceed the budget by loading "just one more" summary
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Self-Monitoring
|
|
46
|
+
|
|
47
|
+
Behavioral guidelines for recognizing and acting on context degradation mid-sequence.
|
|
48
|
+
|
|
49
|
+
- ~ After every 3 completed tasks in a sequence, pause and assess: is reasoning quality declining?
|
|
50
|
+
- ~ Watch for these signals of context rot:
|
|
51
|
+
- Repeating tool calls that were already made earlier
|
|
52
|
+
- Conflating details from different tasks
|
|
53
|
+
- Hesitating on decisions that were already locked
|
|
54
|
+
- Growing urge to re-read files that haven't changed
|
|
55
|
+
- ! When signals appear: write a continue checkpoint (see [continue-here.md](./continue-here.md)) and start a fresh context
|
|
56
|
+
- ~ Proactively checkpoint **before** degradation — don't wait until reasoning visibly breaks
|
|
57
|
+
- ≉ Pushing through "just one more task" when context is saturated
|
|
58
|
+
- ? If task count is uncertain, err on the side of checkpointing early
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Anti-Patterns
|
|
63
|
+
|
|
64
|
+
- ⊗ Task 5 seeing 40 tool calls from tasks 1–4
|
|
65
|
+
- ⊗ Referencing variables/patterns from code that was since refactored
|
|
66
|
+
- ⊗ Avoiding approaches that failed earlier for reasons that no longer apply
|
|
67
|
+
- ⊗ Re-reading the entire project structure at the start of every task
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Continue-Here: Interruption Recovery
|
|
2
|
+
|
|
3
|
+
Surviving context window exhaustion, session timeouts, and manual stops.
|
|
4
|
+
|
|
5
|
+
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
6
|
+
|
|
7
|
+
**⚠️ See also**: [context/long-horizon.md](../context/long-horizon.md) | [resilience/context-pruning.md](./context-pruning.md) | [core/glossary.md](../glossary.md)
|
|
8
|
+
|
|
9
|
+
> Adapted from [GSD](https://github.com/gsd-build/get-shit-done) continue-here model.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Core Principle
|
|
14
|
+
|
|
15
|
+
Sessions end. Work must not be lost. A fresh session must resume from **exactly** where the prior one stopped — without the human re-explaining everything.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## When to Write a Continue Checkpoint
|
|
20
|
+
|
|
21
|
+
- ! On session end (timeout, user stop, compaction event)
|
|
22
|
+
- ! On context window exhaustion
|
|
23
|
+
- ~ Proactively when task complexity suggests resumption is likely
|
|
24
|
+
- ? Mid-task if a natural checkpoint is reached
|
|
25
|
+
|
|
26
|
+
## Continue Checkpoint Contents
|
|
27
|
+
|
|
28
|
+
Persist to `./vbrief/continue.vbrief.json` in vBRIEF format:
|
|
29
|
+
|
|
30
|
+
- ! **Completed** — what's already done (vBRIEF items with `completed` status)
|
|
31
|
+
- ! **Remaining** — what's left (vBRIEF items with `pending` status)
|
|
32
|
+
- ! **Decisions** — choices made during this session (vBRIEF narratives)
|
|
33
|
+
- ~ **Hazards** — what was tricky, what to watch out for (narrative)
|
|
34
|
+
- ! **Resume point** — the exact first thing to do when resuming (narrative on the next `pending` item)
|
|
35
|
+
- ! **Scope vBRIEF reference** — when scope vBRIEFs exist, MUST include `planRef` to the scope vBRIEF(s) the agent was working on (enables the resuming agent to load the durable scope record)
|
|
36
|
+
|
|
37
|
+
## Resume Protocol
|
|
38
|
+
|
|
39
|
+
- ! On resume, read the continue checkpoint — **don't replay conversation history**
|
|
40
|
+
- ! Load the task plan + continue checkpoint into context
|
|
41
|
+
- ! Pick up from the resume point, not from the beginning
|
|
42
|
+
- ! After successful resume, mark the continue checkpoint consumed (status: `completed`)
|
|
43
|
+
- ⊗ Re-debate decisions already recorded in the continue checkpoint
|
|
44
|
+
- ⊗ Re-read prior conversation to reconstruct state
|
|
45
|
+
|
|
46
|
+
## Continue Checkpoint Lifecycle
|
|
47
|
+
|
|
48
|
+
- ! Continue checkpoints are **ephemeral** — consumed on resume, not permanent records
|
|
49
|
+
- ~ Durable learnings from the session → persist to [meta/lessons.md](../../meta/lessons.md)
|
|
50
|
+
- ~ Durable state → persist to the task's vBRIEF plan file or scope vBRIEF(s) in lifecycle folders
|
|
51
|
+
- ! Scope vBRIEFs (`./vbrief/{proposed,pending,active,completed,cancelled}/`) are **durable** — they persist across sessions and are shared between agents; do not conflate them with ephemeral continue checkpoints
|
|
52
|
+
- ⊗ Accumulate stale continue checkpoints — clean up after resume
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Anti-Patterns
|
|
57
|
+
|
|
58
|
+
- ⊗ Resuming by asking the user "where were we?"
|
|
59
|
+
- ⊗ Re-reading full conversation history instead of the continue checkpoint
|
|
60
|
+
- ⊗ Losing in-flight decisions because they weren't persisted
|
|
61
|
+
- ⊗ Starting over from scratch after an interruption
|
|
62
|
+
- ⊗ Creating `continue-{ULID}.json` — the file is singular: `continue.vbrief.json`
|
package/scm/changelog.md
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# Changelog Standards
|
|
2
|
+
|
|
3
|
+
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
4
|
+
|
|
5
|
+
**⚠️ See also**: [git.md](./git.md) | [github.md](./github.md) | [versioning.md](../meta/versioning.md)
|
|
6
|
+
|
|
7
|
+
**Specification**: [Keep a Changelog 1.0.0](https://keepachangelog.com/en/1.0.0/)
|
|
8
|
+
|
|
9
|
+
## Scope
|
|
10
|
+
|
|
11
|
+
! CHANGELOG.md is maintained **on every PR** under `[Unreleased]` and published as a versioned entry at release time.
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
The changelog documents notable changes for **users and consumers** of the software between releases. Individual commits are tracked in git history for developers.
|
|
16
|
+
|
|
17
|
+
## Format
|
|
18
|
+
|
|
19
|
+
! Use Keep a Changelog format in `CHANGELOG.md`:
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
# Changelog
|
|
23
|
+
|
|
24
|
+
All notable changes to this project will be documented in this file.
|
|
25
|
+
|
|
26
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
27
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
28
|
+
|
|
29
|
+
## [Unreleased]
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- New features in development
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
- Changes in existing functionality
|
|
36
|
+
|
|
37
|
+
### Deprecated
|
|
38
|
+
- Soon-to-be removed features
|
|
39
|
+
|
|
40
|
+
### Removed
|
|
41
|
+
- Removed features
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
- Bug fixes
|
|
45
|
+
|
|
46
|
+
### Security
|
|
47
|
+
- Security vulnerability fixes
|
|
48
|
+
|
|
49
|
+
## [1.0.0] - 2024-01-18
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- Initial release
|
|
53
|
+
|
|
54
|
+
[Unreleased]: https://github.com/user/repo/compare/v1.0.0...HEAD
|
|
55
|
+
[1.0.0]: https://github.com/user/repo/releases/tag/v1.0.0
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Sections
|
|
59
|
+
|
|
60
|
+
! Use exactly these section headings:
|
|
61
|
+
|
|
62
|
+
- **Added** - New features
|
|
63
|
+
- **Changed** - Changes in existing functionality
|
|
64
|
+
- **Deprecated** - Soon-to-be removed features
|
|
65
|
+
- **Removed** - Removed features
|
|
66
|
+
- **Fixed** - Bug fixes
|
|
67
|
+
- **Security** - Security vulnerability fixes
|
|
68
|
+
|
|
69
|
+
~ Include only sections with changes for each release.
|
|
70
|
+
|
|
71
|
+
## When to Update
|
|
72
|
+
|
|
73
|
+
! Update CHANGELOG.md **on every PR**, not just at release time:
|
|
74
|
+
|
|
75
|
+
1. Add your entry under `[Unreleased]` in the appropriate section (Added/Changed/Fixed/Removed)
|
|
76
|
+
2. Reference the issue number: `- **Feature Name**: description (#42)`
|
|
77
|
+
3. The PR template checklist enforces this — reviewers should verify
|
|
78
|
+
|
|
79
|
+
? Skip the changelog entry only for test-only, CI-only, or purely internal changes.
|
|
80
|
+
|
|
81
|
+
At release time, `[Unreleased]` is renamed to the new version (see Release Process below).
|
|
82
|
+
|
|
83
|
+
## What to Include
|
|
84
|
+
|
|
85
|
+
! Include changes that affect **users, integrations, or framework-level tooling/structure**:
|
|
86
|
+
|
|
87
|
+
**Include:**
|
|
88
|
+
- New features users can access
|
|
89
|
+
- Breaking changes requiring user action
|
|
90
|
+
- Deprecated features users should stop using
|
|
91
|
+
- Bug fixes users will notice
|
|
92
|
+
- Security fixes
|
|
93
|
+
- Important performance improvements
|
|
94
|
+
|
|
95
|
+
**Exclude:**
|
|
96
|
+
- Internal refactoring invisible to users
|
|
97
|
+
- Documentation typos
|
|
98
|
+
- Test-only changes
|
|
99
|
+
- CI-only pipeline tweaks
|
|
100
|
+
|
|
101
|
+
## Version Format
|
|
102
|
+
|
|
103
|
+
! Each release section takes the form:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
## [MAJOR.MINOR.PATCH] - YYYY-MM-DD
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
! Versions listed in reverse chronological order (newest first).
|
|
110
|
+
|
|
111
|
+
! Use semantic versioning for version numbers (see [versioning.md](../meta/versioning.md)).
|
|
112
|
+
|
|
113
|
+
## Optional Release Summary Blockquote
|
|
114
|
+
|
|
115
|
+
? An optional one-line Markdown blockquote may appear directly after the `## [MAJOR.MINOR.PATCH] - YYYY-MM-DD` heading, sandwiched by blank lines:
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
## [1.1.0] - 2024-02-01
|
|
119
|
+
|
|
120
|
+
> Adds dark mode and CSV export, replacing the legacy theme picker.
|
|
121
|
+
|
|
122
|
+
### Added
|
|
123
|
+
- Dark mode support
|
|
124
|
+
- Export data to CSV format
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
The blockquote captures the operator's one-sentence release narrative (recommended 80-160 chars). It is authored once during the release flow (`task release -- <version> --summary "<text>"`; see `skills/deft-directive-release/SKILL.md` Phase 1) and propagates verbatim into the GitHub release body (auto-pickup via `scripts/release.py::_section_for_version`) AND the Phase 8 Slack `*Summary*:` slot. The blockquote is inline Markdown -- `**bold**`, `[link](url)`, etc. are preserved verbatim. Omit the blockquote (no `--summary` flag) to keep the pre-existing Keep-a-Changelog shape.
|
|
128
|
+
|
|
129
|
+
⊗ Hand-write a different one-line narrative for each downstream surface (CHANGELOG / GitHub release / Slack) -- author once via `--summary` and let the pipeline propagate.
|
|
130
|
+
|
|
131
|
+
## Entry Format
|
|
132
|
+
|
|
133
|
+
~ Each change is a concise bullet point:
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
### Added
|
|
137
|
+
- Dark mode support for web UI
|
|
138
|
+
- Export to CSV functionality in reports
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
~ Start each entry with a verb (Added, Fixed, Changed, etc. implied by section).
|
|
142
|
+
|
|
143
|
+
! Keep entries user-focused, not implementation-focused.
|
|
144
|
+
|
|
145
|
+
**Good examples:**
|
|
146
|
+
- "Added dark mode toggle in settings"
|
|
147
|
+
- "Fixed crash when opening large files"
|
|
148
|
+
- "Removed deprecated `--legacy` flag"
|
|
149
|
+
- "Bumped `black` to 26.3.1 (framework tooling update)"
|
|
150
|
+
|
|
151
|
+
**Bad examples:**
|
|
152
|
+
- "Refactored authentication module" (internal, not user-visible)
|
|
153
|
+
- "Fixed typo in README" (documentation, minor)
|
|
154
|
+
- "Updated ESLint to v8" (dev CI tooling, no impact on framework users)
|
|
155
|
+
|
|
156
|
+
## Unreleased Section
|
|
157
|
+
|
|
158
|
+
! Maintain an `[Unreleased]` section at the top.
|
|
159
|
+
|
|
160
|
+
~ Add notable changes to `[Unreleased]` as they're developed.
|
|
161
|
+
|
|
162
|
+
! Move items from `[Unreleased]` to versioned section during release.
|
|
163
|
+
|
|
164
|
+
## Breaking Changes
|
|
165
|
+
|
|
166
|
+
! Clearly mark breaking changes:
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
## [2.0.0] - 2024-02-15
|
|
170
|
+
|
|
171
|
+
### Changed
|
|
172
|
+
- **BREAKING**: Renamed `--output` flag to `--file`
|
|
173
|
+
- **BREAKING**: Removed support for Python 3.8
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
~ Provide migration guidance for breaking changes:
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
### Changed
|
|
180
|
+
- **BREAKING**: API endpoint `/api/v1/users` moved to `/api/v2/users`
|
|
181
|
+
- Migration: Update all API calls to use `/api/v2/users`
|
|
182
|
+
- Old endpoint will be removed in v3.0.0
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Links
|
|
186
|
+
|
|
187
|
+
~ Include comparison links at bottom:
|
|
188
|
+
|
|
189
|
+
```markdown
|
|
190
|
+
[Unreleased]: https://github.com/user/repo/compare/v1.0.0...HEAD
|
|
191
|
+
[1.0.0]: https://github.com/user/repo/releases/tag/v1.0.0
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
! Update links when adding new versions.
|
|
195
|
+
|
|
196
|
+
## Examples
|
|
197
|
+
|
|
198
|
+
### Minimal Release
|
|
199
|
+
|
|
200
|
+
```markdown
|
|
201
|
+
## [1.0.1] - 2024-01-20
|
|
202
|
+
|
|
203
|
+
### Fixed
|
|
204
|
+
- Crash when opening files larger than 10MB
|
|
205
|
+
- Incorrect timezone display in logs
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Feature Release
|
|
209
|
+
|
|
210
|
+
```markdown
|
|
211
|
+
## [1.1.0] - 2024-02-01
|
|
212
|
+
|
|
213
|
+
### Added
|
|
214
|
+
- Dark mode support
|
|
215
|
+
- Export data to CSV format
|
|
216
|
+
- Keyboard shortcuts for common actions
|
|
217
|
+
|
|
218
|
+
### Fixed
|
|
219
|
+
- Memory leak in background sync
|
|
220
|
+
- Incorrect sorting in dashboard
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Breaking Changes Release
|
|
224
|
+
|
|
225
|
+
```markdown
|
|
226
|
+
## [2.0.0] - 2024-03-01
|
|
227
|
+
|
|
228
|
+
### Changed
|
|
229
|
+
- **BREAKING**: Removed `--legacy` flag (use `--format=legacy` instead)
|
|
230
|
+
- **BREAKING**: Minimum Node.js version now 18.x
|
|
231
|
+
- Migration: Upgrade Node.js to 18.x or later
|
|
232
|
+
|
|
233
|
+
### Added
|
|
234
|
+
- New plugin system for extensibility
|
|
235
|
+
- Built-in support for PostgreSQL 15
|
|
236
|
+
|
|
237
|
+
### Removed
|
|
238
|
+
- Support for deprecated config file format (`.oldrc`)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Release Process
|
|
242
|
+
|
|
243
|
+
! Follow these steps in order when cutting a release:
|
|
244
|
+
|
|
245
|
+
1. ! Rename `## [Unreleased]` to `## [X.Y.Z] - YYYY-MM-DD` (add today's release date)
|
|
246
|
+
2. ! Add a fresh `## [Unreleased]` section above the new version
|
|
247
|
+
3. ! Add link reference at bottom: `[X.Y.Z]: https://github.com/deftai/directive/releases/tag/vX.Y.Z`
|
|
248
|
+
4. ! Update comparison link: `[Unreleased]: https://github.com/deftai/directive/compare/vX.Y.Z...HEAD`
|
|
249
|
+
5. ! Commit: `chore: release vX.Y.Z`
|
|
250
|
+
6. ! Open a PR for the release commit and merge to `master`
|
|
251
|
+
7. ! After merge, tag locally: `git tag -a vX.Y.Z -m "Release vX.Y.Z"`
|
|
252
|
+
8. ! Push the tag: `git push origin vX.Y.Z` (triggers release workflow)
|
|
253
|
+
9. ~ Verify GitHub Actions builds and publishes release artifacts
|
|
254
|
+
|
|
255
|
+
⊗ Tag without a corresponding changelog entry.
|
|
256
|
+
⊗ Write a versioned changelog entry without tagging.
|
|
257
|
+
|
|
258
|
+
## Compliance
|
|
259
|
+
|
|
260
|
+
- ! Maintain `CHANGELOG.md` in project root
|
|
261
|
+
- ! Update `[Unreleased]` on every PR; rename to versioned entry only at release
|
|
262
|
+
- ! Use Keep a Changelog format with exact section names
|
|
263
|
+
- ! Include user-facing changes and framework-level changes (repo structure, tooling, docs) that affect developers who use the framework directly
|
|
264
|
+
- ! Use semantic versioning for release numbers
|
|
265
|
+
- ! Mark breaking changes clearly
|
|
266
|
+
- ! Write entries from user perspective, not developer perspective
|
|
267
|
+
- ~ Provide migration guidance for breaking changes
|
|
268
|
+
- ~ Keep entries concise (1-2 lines per change)
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
**See also**:
|
|
273
|
+
- [Keep a Changelog 1.0.0](https://keepachangelog.com/en/1.0.0/) - Full specification
|
|
274
|
+
- [versioning.md](../meta/versioning.md) - Semantic versioning standards
|
|
275
|
+
- [git.md](./git.md) - Git workflow and tagging
|
|
276
|
+
- [github.md](./github.md) - GitHub releases
|
package/scm/git.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Git Standards
|
|
2
|
+
|
|
3
|
+
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
4
|
+
|
|
5
|
+
**⚠️ See also**: [main.md](../../main.md) | [PROJECT.md](../../PROJECT.md) | [github.md](../scm/github.md)
|
|
6
|
+
|
|
7
|
+
**Stack**: git 2.30+, Conventional Commits, `git --no-pager`, task-based workflows
|
|
8
|
+
|
|
9
|
+
## Standards
|
|
10
|
+
|
|
11
|
+
**Commits**: ! use Conventional Commits format: `type(scope): description`
|
|
12
|
+
**Changelog**: ! follow [Keep a Changelog](./changelog.md) format
|
|
13
|
+
**Versioning**: ~ follow [Semantic Versioning](../meta/versioning.md)
|
|
14
|
+
**Safety**: ⊗ use `git reset --hard` or force-push without explicit permission
|
|
15
|
+
**Workflow**: ! make small, reversible changes; ⊗ introduce silent breaking behavior
|
|
16
|
+
**History**: ~ maintain linear history; ~ rebase over merge for feature branches (with permission)
|
|
17
|
+
**Branches**: ~ use descriptive names: `feat/feature-name`, `fix/bug-name`, `refactor/scope`
|
|
18
|
+
|
|
19
|
+
## Commit Types
|
|
20
|
+
|
|
21
|
+
**Types**: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `perf`, `ci`, `build`, `revert`
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
feat(auth): add JWT token refresh mechanism
|
|
25
|
+
fix(api): handle null response in user endpoint
|
|
26
|
+
docs(readme): update installation instructions
|
|
27
|
+
refactor(db): extract connection pool logic
|
|
28
|
+
test(parser): add edge cases for malformed input
|
|
29
|
+
chore(deps): upgrade golang.org/x/crypto to v0.17
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Format**:
|
|
33
|
+
|
|
34
|
+
- **type(scope)**: ! include type; ~ include scope
|
|
35
|
+
- **description**: ! be lowercase, no period, imperative mood ("add" not "added")
|
|
36
|
+
- **body**: ? be included; ~ wrap at 72 chars if present
|
|
37
|
+
- **footer**: ? include `BREAKING CHANGE:` or `Closes #123`
|
|
38
|
+
|
|
39
|
+
## Workflow Best Practices
|
|
40
|
+
|
|
41
|
+
**Before committing**:
|
|
42
|
+
1. ! Review changes with `git diff` and `git diff --cached`
|
|
43
|
+
2. ! Run `task check` (MUST run pre-commit checks)
|
|
44
|
+
3. ! Use interactive staging (`git add -p`) for complex changes
|
|
45
|
+
4. ! Write descriptive commit messages following Conventional Commits
|
|
46
|
+
|
|
47
|
+
**Branching**:
|
|
48
|
+
- ~ Use descriptive branch names: `feat/feature-name`, `fix/bug-name`
|
|
49
|
+
- ~ Create feature branches from latest `main`
|
|
50
|
+
- ~ Delete branches after merge
|
|
51
|
+
|
|
52
|
+
**Syncing**:
|
|
53
|
+
- ~ Use `git pull --rebase` to maintain linear history
|
|
54
|
+
- ! Always use `git --no-pager` for scripted/programmatic operations
|
|
55
|
+
- ~ Keep feature branches up to date with `main`
|
|
56
|
+
|
|
57
|
+
## .gitignore Patterns
|
|
58
|
+
|
|
59
|
+
```gitignore
|
|
60
|
+
# Dependencies
|
|
61
|
+
node_modules/
|
|
62
|
+
vendor/
|
|
63
|
+
.venv/
|
|
64
|
+
__pycache__/
|
|
65
|
+
|
|
66
|
+
# Build outputs
|
|
67
|
+
dist/
|
|
68
|
+
build/
|
|
69
|
+
*.o
|
|
70
|
+
*.so
|
|
71
|
+
*.dylib
|
|
72
|
+
|
|
73
|
+
# IDE
|
|
74
|
+
.idea/
|
|
75
|
+
.vscode/
|
|
76
|
+
*.swp
|
|
77
|
+
*.swo
|
|
78
|
+
.DS_Store
|
|
79
|
+
|
|
80
|
+
# Secrets (CRITICAL)
|
|
81
|
+
secrets/
|
|
82
|
+
*.env
|
|
83
|
+
*.pem
|
|
84
|
+
*.key
|
|
85
|
+
.envrc
|
|
86
|
+
|
|
87
|
+
# Generated
|
|
88
|
+
coverage/
|
|
89
|
+
htmlcov/
|
|
90
|
+
*.log
|
|
91
|
+
.task/
|
|
92
|
+
|
|
93
|
+
# OS
|
|
94
|
+
Thumbs.db
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Safety Rules
|
|
98
|
+
|
|
99
|
+
**MUST NOT do without explicit permission**:
|
|
100
|
+
|
|
101
|
+
- `git reset --hard` - destroys uncommitted work
|
|
102
|
+
- `git push --force` - rewrites published history
|
|
103
|
+
- `git rebase` on published branches
|
|
104
|
+
- `git clean -fd` - deletes untracked files
|
|
105
|
+
|
|
106
|
+
**Always safe (MAY use freely)**:
|
|
107
|
+
|
|
108
|
+
- `git revert` - creates new commit undoing changes
|
|
109
|
+
- `git restore` - discards unstaged changes (affects working tree only)
|
|
110
|
+
- `git restore --staged` - unstages files
|
|
111
|
+
- `git stash` - temporarily saves work
|
|
112
|
+
|
|
113
|
+
**SHOULD prefer**:
|
|
114
|
+
|
|
115
|
+
- Small commits over large ones
|
|
116
|
+
- Descriptive commit messages over terse ones
|
|
117
|
+
- `--force-with-lease` over `--force` (if force push needed)
|
|
118
|
+
- New commits over history rewriting
|
|
119
|
+
- Temp branches for experiments
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## Changelog & Versioning
|
|
123
|
+
|
|
124
|
+
! Maintain CHANGELOG.md following [Keep a Changelog](./changelog.md) format
|
|
125
|
+
! Use [Semantic Versioning](../meta/versioning.md) for releases:
|
|
126
|
+
- **MAJOR** (X.0.0): Breaking changes
|
|
127
|
+
- **MINOR** (0.X.0): New features (backward compatible)
|
|
128
|
+
- **PATCH** (0.0.X): Bug fixes (backward compatible)
|
|
129
|
+
|
|
130
|
+
## Compliance
|
|
131
|
+
|
|
132
|
+
- ! Use Conventional Commits for all commits: `type(scope): description`
|
|
133
|
+
- ! Maintain CHANGELOG.md following Keep a Changelog format
|
|
134
|
+
- ! Use Semantic Versioning for releases
|
|
135
|
+
- ⊗ Force-push or `reset --hard` without explicit permission
|
|
136
|
+
- ! Run `task check` before committing
|
|
137
|
+
- ! Use `git --no-pager` for programmatic/scripted operations
|
|
138
|
+
- ! Keep secrets in `secrets/` dir; ⊗ commit them
|
|
139
|
+
- ~ Prefer safe alternatives (`revert`, temp branches) over history rewriting
|