steer-ai 0.1.0__tar.gz

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.
Files changed (56) hide show
  1. steer_ai-0.1.0/.gitignore +8 -0
  2. steer_ai-0.1.0/CHANGELOG.md +65 -0
  3. steer_ai-0.1.0/CONTRIBUTING.md +47 -0
  4. steer_ai-0.1.0/LICENSE +21 -0
  5. steer_ai-0.1.0/PKG-INFO +300 -0
  6. steer_ai-0.1.0/README.md +275 -0
  7. steer_ai-0.1.0/SECURITY.md +24 -0
  8. steer_ai-0.1.0/docs/components/context.mdx +75 -0
  9. steer_ai-0.1.0/docs/components/flow.mdx +130 -0
  10. steer_ai-0.1.0/docs/components/learn.mdx +181 -0
  11. steer_ai-0.1.0/docs/components/proc.mdx +78 -0
  12. steer_ai-0.1.0/docs/components/secrets.mdx +75 -0
  13. steer_ai-0.1.0/docs/components/store.mdx +66 -0
  14. steer_ai-0.1.0/docs/docs.json +61 -0
  15. steer_ai-0.1.0/docs/favicon.png +0 -0
  16. steer_ai-0.1.0/docs/guides/authoring.mdx +176 -0
  17. steer_ai-0.1.0/docs/introduction.mdx +88 -0
  18. steer_ai-0.1.0/docs/logo/dark.svg +15 -0
  19. steer_ai-0.1.0/docs/logo/light.svg +15 -0
  20. steer_ai-0.1.0/docs/quickstart.mdx +121 -0
  21. steer_ai-0.1.0/docs/styles.css +0 -0
  22. steer_ai-0.1.0/examples/README.md +71 -0
  23. steer_ai-0.1.0/examples/commit-message/SKILL.md +42 -0
  24. steer_ai-0.1.0/examples/commit-message/references/conventional-commits.md +26 -0
  25. steer_ai-0.1.0/examples/repo-health/SKILL.md +91 -0
  26. steer_ai-0.1.0/examples/repo-health/flow.toml +37 -0
  27. steer_ai-0.1.0/examples/repo-health/scripts/collect.py +119 -0
  28. steer_ai-0.1.0/examples/repo-health/scripts/report.py +116 -0
  29. steer_ai-0.1.0/examples/repo-health/scripts/share.py +76 -0
  30. steer_ai-0.1.0/pyproject.toml +59 -0
  31. steer_ai-0.1.0/steer/__init__.py +55 -0
  32. steer_ai-0.1.0/steer/cli.py +927 -0
  33. steer_ai-0.1.0/steer/context.py +281 -0
  34. steer_ai-0.1.0/steer/create.py +402 -0
  35. steer_ai-0.1.0/steer/distribute.py +158 -0
  36. steer_ai-0.1.0/steer/flow.py +648 -0
  37. steer_ai-0.1.0/steer/frontmatter.py +307 -0
  38. steer_ai-0.1.0/steer/learn.py +575 -0
  39. steer_ai-0.1.0/steer/output.py +70 -0
  40. steer_ai-0.1.0/steer/paths.py +132 -0
  41. steer_ai-0.1.0/steer/proc.py +269 -0
  42. steer_ai-0.1.0/steer/renderer.py +140 -0
  43. steer_ai-0.1.0/steer/scaffold.py +74 -0
  44. steer_ai-0.1.0/steer/secrets.py +251 -0
  45. steer_ai-0.1.0/steer/skill.py +125 -0
  46. steer_ai-0.1.0/steer/store.py +195 -0
  47. steer_ai-0.1.0/steer/validate.py +434 -0
  48. steer_ai-0.1.0/tests/__init__.py +0 -0
  49. steer_ai-0.1.0/tests/helpers.py +49 -0
  50. steer_ai-0.1.0/tests/test_cli_lifecycle.py +194 -0
  51. steer_ai-0.1.0/tests/test_context_proc.py +175 -0
  52. steer_ai-0.1.0/tests/test_flow.py +188 -0
  53. steer_ai-0.1.0/tests/test_frontmatter.py +164 -0
  54. steer_ai-0.1.0/tests/test_learn.py +347 -0
  55. steer_ai-0.1.0/tests/test_secrets_store.py +141 -0
  56. steer_ai-0.1.0/tests/test_validate.py +153 -0
@@ -0,0 +1,8 @@
1
+ .DS_Store
2
+ __pycache__/
3
+ *.pyc
4
+ .venv/
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+ .pytest_cache/
@@ -0,0 +1,65 @@
1
+ # Changelog
2
+
3
+ All notable changes to steer are documented here. The format follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow
5
+ [SemVer](https://semver.org/) (pre-1.0: minor bumps may break).
6
+
7
+ ## 0.1.0: initial public release
8
+
9
+ Published on PyPI as `steer-ai` (the name `steer` was already taken);
10
+ the command and the import are `steer` either way.
11
+
12
+ ### Highlights beyond the components
13
+
14
+ - `steer new` takes component inputs at scaffold time: `--secrets
15
+ KEY[,KEY...]` wires named credentials into the generated instructions,
16
+ `--steps id[,id...]` generates a linear chain of named flow steps, and
17
+ `--user-invoked` scaffolds a human-triggered skill
18
+ (`disable-model-invocation: true`) with validation adapting its trigger
19
+ checks.
20
+ - `flow.toml` strings expand `{skill_dir}` and `{workspace}`, so printed
21
+ directives run verbatim from the workspace even when the skill is
22
+ installed under `.claude/skills/`.
23
+ - `steer validate` prunes as well as checks: `DUPLICATE_TEXT` (the same
24
+ paragraph in two places) and `REFERENCE_ORPHAN` (reference files nothing
25
+ points to).
26
+ - Two complete example skills in `examples/`, scaffolded by steer and
27
+ verified end-to-end by an agent in a sandbox.
28
+
29
+ Steer is the framework for building [Agent Skills](https://agentskills.io):
30
+ authoring tools around the whole lifecycle, plus the runtime components the
31
+ SKILL.md format deliberately leaves out. Zero dependencies: Python stdlib
32
+ only, Python ≥ 3.11.
33
+
34
+ ### Author-time CLI
35
+
36
+ - `steer new`: scaffold a spec-valid skill; `--with
37
+ secrets,store,context,flow,proc,learn` wires components into the generated
38
+ SKILL.md, `--scripts` adds an example script with the result envelope,
39
+ `--auto-learn` wires a Claude Code Stop hook for automatic lesson capture.
40
+ - `steer validate`: the open spec's hard rules (name/description/XML/size),
41
+ progressive-disclosure budgets, broken references, portability warnings for
42
+ Claude-Code-only frontmatter, thin-trigger descriptions, and secret hygiene.
43
+ - `steer package`: validated, API-ready zip; refuses credential-looking
44
+ files.
45
+ - `steer install` / `steer list`: copy into / enumerate `.claude/skills`
46
+ and `.agents/skills`, project and user scope.
47
+
48
+ ### Runtime components (CLI and Python library)
49
+
50
+ - `steer secrets`: per-skill credentials, resolved env var → OS keychain (macOS
51
+ `security` / Linux `secret-tool`) → `0600` file under `~/.steer/`. Never
52
+ inside the skill directory.
53
+ - `steer store`: per-skill SQLite with KV + JSON-document tables + raw SQL,
54
+ user or workspace scope.
55
+ - `steer context`: one-shot situational snapshot, covering platform, host
56
+ agent, git state, project type, tools on PATH.
57
+ - `steer flow`: declarative steps in `flow.toml` with verify conditions
58
+ (`file_exists`, `dir_exists`, `glob`, `command`, `env`); mandate steps
59
+ gated on prerequisites.
60
+ - `steer proc`: managed background processes with port/log-pattern readiness,
61
+ PID bookkeeping, TERM→KILL stop of the whole process group.
62
+ - `steer learn`: capture → curate → promote loop so skills improve from
63
+ their own runs; deterministic curation, human-gated promotion,
64
+ `steer learn reflect` transcript scanning for auto-capture.
65
+ - `steer.output`: one JSON result envelope for every script.
@@ -0,0 +1,47 @@
1
+ # Contributing to steer
2
+
3
+ Thanks for helping build the framework for Agent Skills.
4
+
5
+ ## Ground rules
6
+
7
+ - **Zero runtime dependencies.** Steer is Python stdlib only (`sqlite3`,
8
+ `tomllib`, `zipfile`, …). PRs that add a runtime dependency will be asked
9
+ to find a stdlib way. Dev/CI tooling (pytest, ruff) is fine; it never
10
+ ships.
11
+ - **Python ≥ 3.11**, macOS and Linux are the supported platforms today.
12
+ - **Agent-first UX.** Error messages tell the agent the exact next command
13
+ to run. Every command that prints for humans also takes `--json`.
14
+ - **Spec first.** Scaffolds and validation target the
15
+ [open Agent Skills spec](https://agentskills.io/specification);
16
+ client-specific extensions (e.g. Claude Code hooks) are opt-in and flagged
17
+ by `steer validate` as portability warnings.
18
+
19
+ ## Dev setup
20
+
21
+ ```bash
22
+ git clone https://github.com/bh-rat/steer && cd steer
23
+ uv venv && uv pip install -e . pytest
24
+ .venv/bin/python -m pytest tests/ -q
25
+ ```
26
+
27
+ (Plain `python3 -m venv .venv && .venv/bin/pip install -e . pytest` works
28
+ too; there is nothing uv-specific here.)
29
+
30
+ ## Before you open a PR
31
+
32
+ 1. `python -m pytest tests/ -q`: all green, and new behavior has tests.
33
+ Tests are stdlib `unittest`-style via pytest, hermetic (temp dirs, no
34
+ network, no real `~/.steer`).
35
+ 2. `uvx ruff check steer tests`: clean.
36
+ 3. If you touched the CLI surface or on-disk formats, update the docs
37
+ (`docs/`) and `CHANGELOG.md` in the same PR.
38
+
39
+ ## Good first contributions
40
+
41
+ - New `steer context` detectors (project types, host agents); see
42
+ `steer/context.py`.
43
+ - New `steer flow` verify conditions; see `steer/flow.py`.
44
+ - Validation checks with real-world evidence (link to the skill that
45
+ motivated them).
46
+
47
+ For anything bigger, open an issue first so we can agree on the shape.
steer_ai-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Bharat Geleda
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,300 @@
1
+ Metadata-Version: 2.4
2
+ Name: steer-ai
3
+ Version: 0.1.0
4
+ Summary: The framework for building Agent Skills: scaffolding, validation, packaging, and runtime components (secrets, storage, context, flows, processes, learning) for SKILL.md
5
+ Project-URL: Homepage, https://github.com/bh-rat/steer
6
+ Project-URL: Documentation, https://github.com/bh-rat/steer#readme
7
+ Project-URL: Changelog, https://github.com/bh-rat/steer/blob/main/CHANGELOG.md
8
+ Project-URL: Issues, https://github.com/bh-rat/steer/issues
9
+ Author-email: Bharat Geleda <bharatgeleda@gmail.com>
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: SKILL.md,agent-skills,agents,claude,llm,skills
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
23
+ Requires-Python: >=3.11
24
+ Description-Content-Type: text/markdown
25
+
26
+ # steer
27
+
28
+ **The framework for building Agent Skills.**
29
+
30
+ [![CI](https://github.com/bh-rat/steer/actions/workflows/ci.yml/badge.svg)](https://github.com/bh-rat/steer/actions/workflows/ci.yml)
31
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
32
+ ![Python ≥ 3.11](https://img.shields.io/badge/python-%E2%89%A5%203.11-3776AB)
33
+ ![Zero dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen)
34
+
35
+ [Agent Skills](https://agentskills.io) (a `SKILL.md` plus scripts) are the
36
+ open standard for packaging agent capabilities, supported by Claude Code,
37
+ Codex, Copilot, Cursor, Gemini CLI, and ~40 other clients. The format is
38
+ deliberately tiny, which means it ships no batteries: the spec says nothing
39
+ about credentials, persistence, context gathering, step enforcement, or
40
+ managed processes. Every serious skill hand-rolls some of these.
41
+
42
+ Steer provides them as components, plus the authoring tools to scaffold,
43
+ validate, package, and install skills. Zero dependencies; Python stdlib only.
44
+
45
+ ```
46
+ ┌─ author-time ──────────────────────┐ ┌─ runtime (CLI or library) ─────────┐
47
+ │ steer new scaffold a skill │ │ steer secrets credentials │
48
+ │ steer validate spec + hygiene │ │ steer store per-skill SQLite │
49
+ │ steer package API-ready zip │ │ steer context situational recon │
50
+ │ steer install into skill dirs │ │ steer flow enforced steps │
51
+ │ steer list what's installed │ │ steer proc managed processes │
52
+ └────────────────────────────────────┘ │ steer learn skills that learn │
53
+ └────────────────────────────────────┘
54
+ ```
55
+
56
+ ## Why
57
+
58
+ Steer's components are reverse-engineered from what good skills already
59
+ hand-roll in prose and fragile bash (enforced steps, situational recon,
60
+ persistent state, credentials, process lifecycles), turned into machinery
61
+ you get with one flag.
62
+
63
+ ## Install
64
+
65
+ ```bash
66
+ uv tool install steer-ai # installs the `steer` command
67
+ # or: pip install steer-ai
68
+ # latest from main: uv tool install git+https://github.com/bh-rat/steer
69
+ steer --version
70
+ ```
71
+
72
+ Requires Python ≥ 3.11. No runtime dependencies.
73
+
74
+ ## Quickstart
75
+
76
+ ```bash
77
+ steer new stripe-report \
78
+ --description "Generates revenue reports from Stripe. Use when the user asks for revenue, MRR, or payment reporting." \
79
+ --with secrets,context,flow,learn --scripts
80
+ ```
81
+
82
+ This scaffolds a spec-valid skill:
83
+
84
+ ```
85
+ stripe-report/
86
+ ├── SKILL.md # frontmatter + body with the components wired in
87
+ ├── flow.toml # declarative steps with verify conditions
88
+ └── scripts/
89
+ └── example.py # non-interactive, JSON result envelope on stdout
90
+ ```
91
+
92
+ The generated `SKILL.md` already tells the agent how to behave:
93
+
94
+ > 1. **Ground yourself.** Run `steer context` and read the snapshot.
95
+ > 2. **Apply past lessons.** Run `steer learn show`; those lessons came
96
+ > from real previous runs.
97
+ > 3. **Check credentials.** Run `steer secrets check STRIPE_REPORT_API_KEY
98
+ > --skill stripe-report`. If missing, ask the user to run
99
+ > `steer secrets set ...` (never ask them to paste the value into the
100
+ > chat).
101
+ > 4. **Follow the flow.** `steer flow status` → do the step → steps verify
102
+ > themselves against reality; you cannot skip ahead.
103
+
104
+ For a skill only the human should trigger, `steer new --user-invoked`
105
+ sets `disable-model-invocation: true` and validation adapts.
106
+
107
+ Then:
108
+
109
+ ```bash
110
+ steer validate stripe-report # spec rules, broken refs, secret hygiene
111
+ steer install stripe-report # → .claude/skills/ (project scope)
112
+ steer package stripe-report # → validated zip for the Claude API / claude.ai
113
+ ```
114
+
115
+ ## Examples
116
+
117
+ Two complete skills built this way live in [`examples/`](examples/):
118
+ [`repo-health`](examples/repo-health) exercises all six components in
119
+ one skill (enforced flow, trend memory, credential handoff, managed
120
+ preview server, lesson capture), and
121
+ [`commit-message`](examples/commit-message) is the minimal user-invoked
122
+ counterpoint. Their READMEs show exactly which lines steer generated and
123
+ which the author filled in.
124
+
125
+ ## The components
126
+
127
+ ### `steer secrets`: credentials that never live in the skill
128
+
129
+ Skill directories get zipped and uploaded; credentials must live outside
130
+ them. Resolution order: env var → OS keychain (macOS `security` /
131
+ Linux `secret-tool`) → `0600` file under `~/.steer/`.
132
+
133
+ ```bash
134
+ steer secrets check STRIPE_API_KEY --skill stripe-report # agent checks
135
+ steer secrets set STRIPE_API_KEY --skill stripe-report # human sets (hidden prompt)
136
+ ```
137
+
138
+ ```python
139
+ from steer import Secrets
140
+ key = Secrets("stripe-report").require("STRIPE_API_KEY",
141
+ hint="dashboard.stripe.com/apikeys")
142
+ # missing -> MissingSecretError whose message tells the agent
143
+ # exactly what command to ask the human to run
144
+ ```
145
+
146
+ ### `steer store`: per-skill SQLite
147
+
148
+ ```bash
149
+ steer store put last_run '"2026-06-11"' --skill stripe-report
150
+ steer store insert runs '{"month": "may", "total": 1200}' --skill stripe-report
151
+ steer store find runs --where month=may --skill stripe-report
152
+ ```
153
+
154
+ KV + JSON-document tables + raw SQL. Two scopes: `user`
155
+ (`~/.steer/skills/<name>/store.db`) and `workspace`
156
+ (`<project>/.steer/<name>/store.db`).
157
+
158
+ ### `steer context`: situational recon in one command
159
+
160
+ ```bash
161
+ steer context # markdown for the agent to read
162
+ steer context --json --only git,project,tools
163
+ ```
164
+
165
+ One command reports the platform, host agent (Claude Code, Codex, Cursor,
166
+ and others), git state, project type (from lockfiles and manifests), tools
167
+ on PATH, and a small allowlist of env flags. It never dumps the environment.
168
+
169
+ ### `steer flow`: steps the agent cannot skip
170
+
171
+ Define the process in `flow.toml`; steps with a `verify` condition complete
172
+ only when reality matches, mandate steps are marked explicitly, and marking
173
+ is gated on prerequisites:
174
+
175
+ ```toml
176
+ [[steps]]
177
+ id = "configure"
178
+ directive = "Create out/config.json with the data sources"
179
+ [steps.verify]
180
+ file_exists = "out/config.json"
181
+
182
+ [[steps]]
183
+ id = "review"
184
+ directive = "Read the config and confirm the mappings look right"
185
+ requires = ["configure"]
186
+ ```
187
+
188
+ ```bash
189
+ steer flow status # progress bar + current directive
190
+ steer flow next # what to do now
191
+ steer flow done review # mark a mandate step (refused if prereqs incomplete)
192
+ ```
193
+
194
+ Verify conditions: `file_exists`, `dir_exists`, `glob`, `command` (exit 0),
195
+ `env`. Python API: `steer.Flow` / `steer.Step` for full programmatic control.
196
+
197
+ ### `steer proc`: background processes that don't zombie
198
+
199
+ ```bash
200
+ steer proc start web --ready-port 5173 -- npm run dev
201
+ steer proc status web
202
+ steer proc logs web
203
+ steer proc stop web # TERM → wait → KILL, whole process group
204
+ ```
205
+
206
+ It checks readiness by port or log pattern, keeps PID bookkeeping under
207
+ `<workspace>/.steer/proc/`, guards against recycled PIDs, and captures logs.
208
+
209
+ ### `steer learn`: skills that improve from their own runs
210
+
211
+ Tooling exists to improve a skill before it ships, and agents carry runtime
212
+ memory; nothing connects the two, so a skill learns nothing from its own
213
+ runs. `steer learn` is that connection, a capture → curate → promote loop:
214
+ the agent records lessons the moment they happen, reads a bounded digest at
215
+ the start of every run, and the author promotes the keepers into the shipped
216
+ skill.
217
+
218
+ ```bash
219
+ steer learn note "Use the EU endpoint for EU accounts" --kind correction
220
+ steer learn show # ranked digest the SKILL.md tells the agent to read
221
+ steer learn confirm 3 # helped → stronger; dispute → weaker, auto-archives
222
+ steer learn promote 3 # human-gated: append to the skill's learnings.md
223
+ steer learn run ok && steer learn stats
224
+ ```
225
+
226
+ Curation is deterministic (no LLM inside the framework; the agent is the
227
+ reflector): duplicates confirm instead of duplicating, disputed-more-than-
228
+ confirmed auto-archives, a hard cap evicts the weakest, credential-shaped
229
+ notes are refused.
230
+
231
+ The structure is fixed and inspectable: `~/.steer/skills/<name>/lessons.db`
232
+ (source of truth) plus an auto-maintained readable `LEARNINGS.md` mirror,
233
+ both outside the skill dir, so lessons survive reinstalls and never ship by
234
+ accident. Promoted lessons land in the skill's `learnings.md`, which does
235
+ ship.
236
+
237
+ **Auto-learning:** `steer new my-skill --auto-learn` wires a Claude Code
238
+ skill-scoped Stop hook running `steer learn reflect`. When the agent tries
239
+ to finish, it deterministically scans the session transcript for corrections
240
+ and failed tool calls, and (once) blocks the stop with exact capture
241
+ instructions. Capture no longer depends on the agent remembering to do it.
242
+
243
+ ### Result envelope: one output shape for every script
244
+
245
+ ```python
246
+ from steer.output import print_envelope
247
+ print_envelope("ok", "Report generated",
248
+ data={"rows": 120}, artifacts=["out/report.pdf"])
249
+ ```
250
+
251
+ ```json
252
+ {
253
+ "status": "ok",
254
+ "summary": "Report generated",
255
+ "data": {"rows": 120},
256
+ "artifacts": ["out/report.pdf"]
257
+ }
258
+ ```
259
+
260
+ ## Validation
261
+
262
+ `steer validate` checks the open spec's hard rules (name format/length and
263
+ directory match, description 1-1024 chars, no XML), progressive-disclosure
264
+ budgets (<500-line body), broken file references, portability (Claude-Code-
265
+ only frontmatter), thin trigger descriptions, duplicated paragraphs across
266
+ SKILL.md and references (keep one source of truth), orphaned `references/`
267
+ files nothing points to, and secret hygiene: credential-looking files
268
+ inside a skill are warnings normally and hard errors at packaging time.
269
+ `steer package` refuses to ship them.
270
+
271
+ ## Library use
272
+
273
+ Everything the CLI does is importable (`from steer import Skill, Flow,
274
+ Secrets, Store, validate_skill, discover`) for building your own skill
275
+ tooling on top.
276
+
277
+ ## What steer is not
278
+
279
+ Not a registry or installer ecosystem (use `npx skills`, Tessl, or plugin
280
+ marketplaces; steer sits upstream of them), not an eval harness (yet), and
281
+ not useful at runtime for pure-knowledge skills (a style guide needs no
282
+ database, though steer still helps author and validate it).
283
+
284
+ ## Roadmap
285
+
286
+ Skill-to-skill dependencies / shared libraries, `steer test`
287
+ (trigger-regression + cross-runtime checks), signing/provenance, TypeScript
288
+ SDK, PyPI release.
289
+
290
+ ## Docs & contributing
291
+
292
+ Full documentation lives in [`docs/`](docs/) (introduction, quickstart, a
293
+ page per component, and the authoring guide, including the checklist for
294
+ writing skill bodies: trigger, structure, steering, pruning). Contributions
295
+ are welcome; see [CONTRIBUTING.md](CONTRIBUTING.md). Security reports go to
296
+ [SECURITY.md](SECURITY.md).
297
+
298
+ ## License
299
+
300
+ [MIT](LICENSE)