agentic-workflows

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2026 License: MIT

README

agentic-workflows

An opinionated agentic-development workflow, wrapped in deterministic checks so it actually holds.

CI Go Status Claude Code

awf renders a standardised, opinionated agentic-development workflow into any project — a suite of Claude Code skills, independent review agents, and documentation — from a small committed config tree, and wraps the probabilistic agent in deterministic checks (drift, frontmatter, invariant backing, dead links).

You keep a .awf/ config tree in your repo; awf renders it into the files your agent reads (.claude/, AGENTS.md, docs/), and tells you the moment the rendered output drifts from the config that produced it.

Status: pre-1.0 and evolving; the rendered standard is language-agnostic, the awf tool is a Go binary. Interfaces may change before a tagged release.

Why

The instructions your AI agent follows — how to brainstorm, when to write an ADR, what a review must check, which gate blocks a commit — are usually scattered across prompts, retyped per session, and impossible to review. They drift from how the project actually works, and nothing tells you when.

awf makes that workflow a version-controlled artifact:

  • Reviewable — the workflow lives in a committed .awf/ config tree, so changes to how your agents work go through the same diff-and-review as changes to your code.
  • Consistent — every contributor (and every agent session) reads the same rendered skills, agents, and docs; there is no per-developer prompt folklore.
  • Enforced — a deterministic gate wraps the probabilistic agent: drift detection, frontmatter validation, invariant backing, and dead-link checks fail loudly instead of rotting silently.
  • Portable — one small config tree renders a whole standard into any repo, in any language, and awf check keeps the rendered output honest forever after.

How it works

.awf/  (you commit this)          rendered output (awf writes & tracks this)
├── config.yaml   enable arrays   ├── AGENTS.md            agent guide
│                 + vars          ├── CLAUDE.md            imports AGENTS.md
├── <kind>/<name>.yaml  sidecars  ├── .claude/skills/…     workflow skills
└── <kind>/parts/…/…    overrides ├── .claude/agents/…     review agents
                                  └── docs/…               project docs

You change the config and re-render; you never hand-edit a rendered file. awf check fails if a rendered file is stale (config changed) or hand-edited, so the two never silently diverge. To customise a section, drop a convention part under .awf/ that overrides just that section and inherits the rest of the template.

Install

Download a prebuilt binary for your platform from the latest release, extract it, and put awf on your PATH. awf is a single static binary with no runtime dependencies — no Go toolchain required.

Install from source (Go users)

Requires Go 1.26+.

go install github.com/hypnotox/agentic-workflows/cmd/awf@latest

Quickstart

cd your-project
awf init             # scaffold .awf/, render the workflow-core set
awf check            # verify rendered output is in sync
awf list             # see which targets are enabled vs available
awf add skill tdd    # opt a skill in
awf add doc pitfalls # opt a doc in

awf init enables a curated workflow core by default — the brainstorm → ADR → plan → implement → review chain skills, the review agents, and the workflow docs. Everything else in the catalog is opt-in with awf add <kind> <name> (and awf remove <kind> <name> to opt back out).

Commands

Command Purpose
awf init Scaffold .awf/ and render. --force overwrites colliding files (backing each up to <path>.awf-bak). Prompts for config values on a TTY; --describe prints the fillable values as JSON (for agents), and --set k=v / --answers FILE supply them non-interactively. --set skills=/--set docs= trim which catalog skills/docs are enabled (core pre-selected).
awf sync Re-render after a template or config change.
awf check Fail on stale or hand-edited rendered output.
awf list [<kind>] Show targets and their per-project state (all kinds, or one).
awf add <kind> <name> Enable a target — <kind>skill, agent, doc, domain.
awf remove <kind> <name> Disable a target (a catalog target, or a freeform domain).
awf audit Report workflow-conformance findings over the branch (advisory).
awf invariants Report Implemented-ADR invariants lacking a backing comment.
awf upgrade Migrate the .awf/ config tree to the current schema.
awf uninstall Remove awf's generated files (keeps your .awf/ config).
awf version Print the awf version.

Run awf help for the full synopsis.

Adopting into an existing repo

awf init never silently clobbers your files. If a path it would write (e.g. an existing AGENTS.md) is already present and not awf-managed, init refuses and lists the collisions. Then:

  • awf init --force overwrites them, backing each original up to <path>.awf-bak first.
  • Trim to taste — the curated default is small; grow or shrink it with awf add/remove <kind> <name> (or edit .awf/config.yaml directly).
  • Back out anytimeawf uninstall removes everything awf generated, leaving your .awf/ config in place.

awf does not install or manage git hooks. To run the gate automatically, install one yourself — point core.hooksPath at a tracked hook directory (git config core.hooksPath .githooks) or add a script under .git/hooks/. If you adopted an earlier awf that ran awf setup, your repo's core.hooksPath still points at the no-longer-rendered .githooks/; run git config --unset core.hooksPath (or keep the now hand-owned hook files) after upgrading.

Documentation

Contributing

This project develops itself with the workflow it ships. Before non-trivial work, read AGENTS.md and docs/workflow.md. The core rule: never hand-edit a rendered file — change .awf/ (or a template) and run awf sync, then awf check. The gate (./x gate) must pass before every commit.

License

MIT © hypnotox.

awf renders configuration for, and interoperates with, Anthropic's Claude Code, but is an independent project — not affiliated with or endorsed by Anthropic.

Directories

Path Synopsis
cmd
awf command
Command awf renders standardised .claude skills, review agents, and docs into a project from embedded templates plus a per-project .awf/ config tree.
Command awf renders standardised .claude skills, review agents, and docs into a project from embedded templates plus a per-project .awf/ config tree.
covercheck command
Command covercheck fails when a Go coverprofile shows less than 100% statement coverage over blocks not marked with a coverage-ignore directive.
Command covercheck fails when a Go coverprofile shows less than 100% statement coverage over blocks not marked with a coverage-ignore directive.
internal
adr
Package adr parses ADR files under docs/decisions and renders the ACTIVE.md index.
Package adr parses ADR files under docs/decisions and renders the ACTIVE.md index.
audit
Package audit reports workflow-conformance findings over a branch's git history.
Package audit reports workflow-conformance findings over a branch's git history.
catalog
Package catalog loads the embedded catalog.yaml that declares the standard's skills, agents, and docs.
Package catalog loads the embedded catalog.yaml that declares the standard's skills, agents, and docs.
config
Package config loads and validates the per-project .awf/ configuration: a skeleton config.yaml plus per-target sidecar YAMLs and convention parts.
Package config loads and validates the per-project .awf/ configuration: a skeleton config.yaml plus per-target sidecar YAMLs and convention parts.
coverage
Package coverage parses a Go coverprofile and reports statement coverage over blocks not marked with a coverage-ignore directive.
Package coverage parses a Go coverprofile and reports statement coverage over blocks not marked with a coverage-ignore directive.
frontmatter
Package frontmatter splits and parses YAML frontmatter delimited by leading "---" lines in markdown content.
Package frontmatter splits and parses YAML frontmatter delimited by leading "---" lines in markdown content.
initspec
Package initspec resolves awf init answers against the catalog's value descriptors and emits the descriptor schema (ADR-0029).
Package initspec resolves awf init answers against the catalog's value descriptors and emits the descriptor schema (ADR-0029).
invariants
Package invariants checks that each Implemented ADR's `inv: <slug>` invariant tag is backed by a `<marker> invariant: <slug>` comment in a configured source file.
Package invariants checks that each Implemented ADR's `inv: <slug>` invariant tag is backed by a `<marker> invariant: <slug>` comment in a configured source file.
manifest
Package manifest reads and writes the .awf/awf.lock and detects drift between rendered output and its sources.
Package manifest reads and writes the .awf/awf.lock and detects drift between rendered output and its sources.
migrate
Package migrate ports a project's awf config across schema generations.
Package migrate ports a project's awf config across schema generations.
project
Package project ties config, catalog, render, and manifest together to sync rendered files into a project and check them for drift.
Package project ties config, catalog, render, and manifest together to sync rendered files into a project and check them for drift.
refs
Package refs extracts internal markdown link targets from rendered content.
Package refs extracts internal markdown link targets from rendered content.
render
Package render parses awf section markers and renders templates with per-project overlays via text/template.
Package render parses awf section markers and renders templates with per-project overlays via text/template.
Package templates embeds the standard's template tree (catalog.yaml, skills, agents, docs).
Package templates embeds the standard's template tree (catalog.yaml, skills, agents, docs).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL