feat: add llms.txt standard support for AI agent discoverability (#784)
Cherry-picked website/, scripts/generate-llms-full.sh, and deploy-docs.yml from joyshmitz's PR. Fixed workflow to trigger on main branch instead of docs/docusaurus-site. Features: - Docusaurus documentation site with llms.txt support - Environment-variable driven config (defaults to steveyegge org) - Automated llms-full.txt generation from docs - GitHub Pages deployment workflow Co-authored-by: joyshmitz <joyshmitz@users.noreply.github.com> 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Executed-By: beads/crew/dave Rig: beads Role: crew
This commit is contained in:
252
website/docs/workflows/formulas.md
Normal file
252
website/docs/workflows/formulas.md
Normal file
@@ -0,0 +1,252 @@
|
||||
---
|
||||
id: formulas
|
||||
title: Formulas
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Formulas
|
||||
|
||||
Formulas are declarative workflow templates.
|
||||
|
||||
## Formula Format
|
||||
|
||||
Formulas can be written in TOML (preferred) or JSON:
|
||||
|
||||
### TOML Format
|
||||
|
||||
```toml
|
||||
formula = "feature-workflow"
|
||||
description = "Standard feature development workflow"
|
||||
version = 1
|
||||
type = "workflow"
|
||||
|
||||
[vars.feature_name]
|
||||
description = "Name of the feature"
|
||||
required = true
|
||||
|
||||
[[steps]]
|
||||
id = "design"
|
||||
title = "Design {{feature_name}}"
|
||||
type = "human"
|
||||
description = "Create design document"
|
||||
|
||||
[[steps]]
|
||||
id = "implement"
|
||||
title = "Implement {{feature_name}}"
|
||||
needs = ["design"]
|
||||
|
||||
[[steps]]
|
||||
id = "review"
|
||||
title = "Code review"
|
||||
needs = ["implement"]
|
||||
type = "human"
|
||||
|
||||
[[steps]]
|
||||
id = "merge"
|
||||
title = "Merge to main"
|
||||
needs = ["review"]
|
||||
```
|
||||
|
||||
### JSON Format
|
||||
|
||||
```json
|
||||
{
|
||||
"formula": "feature-workflow",
|
||||
"description": "Standard feature development workflow",
|
||||
"version": 1,
|
||||
"type": "workflow",
|
||||
"vars": {
|
||||
"feature_name": {
|
||||
"description": "Name of the feature",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"id": "design",
|
||||
"title": "Design {{feature_name}}",
|
||||
"type": "human"
|
||||
},
|
||||
{
|
||||
"id": "implement",
|
||||
"title": "Implement {{feature_name}}",
|
||||
"needs": ["design"]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Formula Types
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| `workflow` | Standard step sequence |
|
||||
| `expansion` | Template for expansion operator |
|
||||
| `aspect` | Cross-cutting concerns |
|
||||
|
||||
## Variables
|
||||
|
||||
Define variables with defaults and constraints:
|
||||
|
||||
```toml
|
||||
[vars.version]
|
||||
description = "Release version"
|
||||
required = true
|
||||
pattern = "^\\d+\\.\\d+\\.\\d+$"
|
||||
|
||||
[vars.environment]
|
||||
description = "Target environment"
|
||||
default = "staging"
|
||||
enum = ["staging", "production"]
|
||||
```
|
||||
|
||||
Use variables in steps:
|
||||
|
||||
```toml
|
||||
[[steps]]
|
||||
title = "Deploy {{version}} to {{environment}}"
|
||||
```
|
||||
|
||||
## Step Types
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| `task` | Normal work step (default) |
|
||||
| `human` | Requires human action |
|
||||
| `gate` | Async coordination point |
|
||||
|
||||
## Dependencies
|
||||
|
||||
### Sequential
|
||||
|
||||
```toml
|
||||
[[steps]]
|
||||
id = "step1"
|
||||
title = "First step"
|
||||
|
||||
[[steps]]
|
||||
id = "step2"
|
||||
title = "Second step"
|
||||
needs = ["step1"]
|
||||
```
|
||||
|
||||
### Parallel then Join
|
||||
|
||||
```toml
|
||||
[[steps]]
|
||||
id = "test-unit"
|
||||
title = "Unit tests"
|
||||
|
||||
[[steps]]
|
||||
id = "test-integration"
|
||||
title = "Integration tests"
|
||||
|
||||
[[steps]]
|
||||
id = "deploy"
|
||||
title = "Deploy"
|
||||
needs = ["test-unit", "test-integration"] # Waits for both
|
||||
```
|
||||
|
||||
## Gates
|
||||
|
||||
Add gates for async coordination:
|
||||
|
||||
```toml
|
||||
[[steps]]
|
||||
id = "approval"
|
||||
title = "Manager approval"
|
||||
type = "human"
|
||||
|
||||
[steps.gate]
|
||||
type = "human"
|
||||
approvers = ["manager"]
|
||||
|
||||
[[steps]]
|
||||
id = "deploy"
|
||||
title = "Deploy to production"
|
||||
needs = ["approval"]
|
||||
```
|
||||
|
||||
## Aspects (Cross-cutting)
|
||||
|
||||
Apply transformations to matching steps:
|
||||
|
||||
```toml
|
||||
formula = "security-scan"
|
||||
type = "aspect"
|
||||
|
||||
[[advice]]
|
||||
target = "*.deploy" # Match all deploy steps
|
||||
|
||||
[advice.before]
|
||||
id = "security-scan-{step.id}"
|
||||
title = "Security scan before {step.title}"
|
||||
```
|
||||
|
||||
## Formula Locations
|
||||
|
||||
Formulas are searched in order:
|
||||
1. `.beads/formulas/` (project-level)
|
||||
2. `~/.beads/formulas/` (user-level)
|
||||
3. Built-in formulas
|
||||
|
||||
## Using Formulas
|
||||
|
||||
```bash
|
||||
# List available formulas
|
||||
bd mol list
|
||||
|
||||
# Pour formula into molecule
|
||||
bd pour <formula-name> --var key=value
|
||||
|
||||
# Preview what would be created
|
||||
bd pour <formula-name> --dry-run
|
||||
```
|
||||
|
||||
## Creating Custom Formulas
|
||||
|
||||
1. Create file: `.beads/formulas/my-workflow.formula.toml`
|
||||
2. Define structure (see examples above)
|
||||
3. Use with: `bd pour my-workflow`
|
||||
|
||||
## Example: Release Formula
|
||||
|
||||
```toml
|
||||
formula = "release"
|
||||
description = "Standard release workflow"
|
||||
version = 1
|
||||
|
||||
[vars.version]
|
||||
required = true
|
||||
pattern = "^\\d+\\.\\d+\\.\\d+$"
|
||||
|
||||
[[steps]]
|
||||
id = "bump-version"
|
||||
title = "Bump version to {{version}}"
|
||||
|
||||
[[steps]]
|
||||
id = "changelog"
|
||||
title = "Update CHANGELOG"
|
||||
needs = ["bump-version"]
|
||||
|
||||
[[steps]]
|
||||
id = "test"
|
||||
title = "Run full test suite"
|
||||
needs = ["changelog"]
|
||||
|
||||
[[steps]]
|
||||
id = "build"
|
||||
title = "Build release artifacts"
|
||||
needs = ["test"]
|
||||
|
||||
[[steps]]
|
||||
id = "tag"
|
||||
title = "Create git tag v{{version}}"
|
||||
needs = ["build"]
|
||||
|
||||
[[steps]]
|
||||
id = "publish"
|
||||
title = "Publish release"
|
||||
needs = ["tag"]
|
||||
type = "human"
|
||||
```
|
||||
Reference in New Issue
Block a user