Skip to content

Commit 9be5e54

Browse files
author
Skill Forge Maintainers
committed
v1.0.0 Forge Console
Add a product-level Skill Forge console with doctor, demo, forge, evolve, install, uninstall, feedback, replay, release-check, and version commands. Keep the existing lower-level scripts as stable automation interfaces. Promote the package to v1.0.0, document ClawHub-installed console usage, add Forge Console reference docs, and extend release checks with console doctor and demo smoke coverage.
1 parent 0335a95 commit 9be5e54

9 files changed

Lines changed: 701 additions & 27 deletions

File tree

‎README.md‎

Lines changed: 60 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,19 @@ This repository contains the `skill-forge` OpenClaw-compatible skill. It also su
1313

1414
`skill-forge` is a milestone self-improvement product for OpenClaw-style agents.
1515

16-
Current version: `v0.5.0 "Signed Gate"`.
16+
Current version: `v1.0.0 "Forge Console"`.
1717

1818
It turns repeated capability gaps into reviewed skill candidates. The product deliberately separates learning, generation, validation, and installation so an agent can improve itself without silently polluting its own skill set.
1919

20+
`v1.0.0` introduces the Forge Console, a single product entry point over the full lifecycle:
21+
22+
```bash
23+
python3 skill-forge/scripts/skill_forge.py doctor --json
24+
python3 skill-forge/scripts/skill_forge.py demo --json
25+
python3 skill-forge/scripts/skill_forge.py forge --output ./generated --install plan --json
26+
python3 skill-forge/scripts/skill_forge.py release-check --json
27+
```
28+
2029
## Quick Start
2130

2231
### 1. Install the skill into OpenClaw
@@ -37,6 +46,13 @@ The ClawHub package is published as `skills-forge` because `skill-forge` is alre
3746

3847
ClawHub may show a safety warning because this skill includes Telegram approval calls and local install/rollback scripts. Review the source first; for non-interactive installs, pass `--force` only after review.
3948

49+
After a ClawHub install, run the console from the installed package:
50+
51+
```bash
52+
python3 ~/.openclaw/workspace/skills/skills-forge/scripts/skill_forge.py doctor --json
53+
python3 ~/.openclaw/workspace/skills/skills-forge/scripts/skill_forge.py demo --json
54+
```
55+
4056
For local development, symlink this repository into OpenClaw:
4157

4258
```bash
@@ -63,26 +79,35 @@ Edit `~/.openclaw/skill-forge.env` and set your own Telegram bot token and chat
6379
### 3. Run release checks
6480

6581
```bash
66-
python3 tests/run_release_checks.py
82+
python3 skill-forge/scripts/skill_forge.py release-check
6783
```
6884

69-
### 4. Generate a candidate skill
85+
### 4. Check readiness
7086

7187
```bash
72-
python3 skill-forge/scripts/forge_pipeline.py \
73-
--source skill-forge/examples/sample-feature-requests.md \
74-
--source skill-forge/examples/sample-errors.md \
75-
--output ./generated \
76-
--eval hidden \
77-
--install plan \
78-
--agent-name StudyAgent \
88+
python3 skill-forge/scripts/skill_forge.py doctor \
89+
--env-file ~/.openclaw/skill-forge.env \
7990
--json
8091
```
8192

82-
### 5. Install only after Telegram approval
93+
### 5. Run the safe demo
8394

8495
```bash
85-
python3 skill-forge/scripts/forge_pipeline.py \
96+
python3 skill-forge/scripts/skill_forge.py demo --json
97+
```
98+
99+
Expected behavior:
100+
101+
- detects the bundled `citation-helper` example
102+
- generates a candidate skill
103+
- validates it as `grade=milestone`
104+
- prints a plan-only install proposal
105+
- does not mutate installed skills
106+
107+
### 6. Install only after Telegram approval
108+
109+
```bash
110+
python3 skill-forge/scripts/skill_forge.py forge \
86111
--source skill-forge/examples/sample-feature-requests.md \
87112
--source skill-forge/examples/sample-errors.md \
88113
--output ./generated \
@@ -107,6 +132,7 @@ Reply to the Telegram approval message with `同意安装` or `yes`.
107132
- Records later usage feedback and proposes reviewed skill updates instead of self-mutating installed skills.
108133
- Runs scheduled nightly health reviews during sleep hours and can propose safe update candidates.
109134
- Builds redacted replay cases from feedback and blocks update candidates that regress on replay evaluation.
135+
- Provides a unified Forge Console (`scripts/skill_forge.py`) for doctor checks, demos, generation, signed install plans, feedback capture, replay checks, and release gates.
110136

111137
## Repository Layout
112138

@@ -125,6 +151,7 @@ skill-forge/
125151
│ ├── detect_skill_opportunities.py
126152
│ ├── evaluate_skill_candidate.py
127153
│ ├── forge_pipeline.py
154+
│ ├── skill_forge.py
128155
│ ├── generate_skill_scaffold.py
129156
│ ├── validate_skill_candidate.py
130157
│ ├── install/
@@ -195,12 +222,7 @@ Root-level wrappers remain under `skill-forge/scripts/*.py` for backward compati
195222
Run the plan-only pipeline (no installs, no Telegram, no secrets needed):
196223

197224
```bash
198-
python3 skill-forge/scripts/forge_pipeline.py \
199-
--source skill-forge/examples/sample-feature-requests.md \
200-
--source skill-forge/examples/sample-errors.md \
201-
--output ./generated-milestone \
202-
--eval hidden \
203-
--json
225+
python3 skill-forge/scripts/skill_forge.py demo --json
204226
```
205227

206228
Expected behavior:
@@ -220,7 +242,7 @@ export TELEGRAM_CHAT_ID="..."
220242
# When unset, the secret is derived deterministically from TELEGRAM_BOT_TOKEN.
221243
export SKILL_FORGE_APPROVAL_SECRET="..."
222244

223-
python3 skill-forge/scripts/forge_pipeline.py \
245+
python3 skill-forge/scripts/skill_forge.py forge \
224246
--source skill-forge/examples/sample-feature-requests.md \
225247
--source skill-forge/examples/sample-errors.md \
226248
--output ./generated-milestone \
@@ -239,9 +261,7 @@ What `--install telegram` does internally:
239261
Dry-run preview without sending a Telegram message:
240262

241263
```bash
242-
python3 skill-forge/scripts/forge_pipeline.py \
243-
--source skill-forge/examples/sample-feature-requests.md \
244-
--source skill-forge/examples/sample-errors.md \
264+
python3 skill-forge/scripts/skill_forge.py forge \
245265
--output ./generated-milestone \
246266
--install telegram \
247267
--telegram-dry-run approve \
@@ -253,6 +273,23 @@ This issues a `mode=dry-run` token and exits with `install_status=dry-run-blocke
253273

254274
## Manual Workflow
255275

276+
The Forge Console is the product-level interface. The lower-level scripts remain public and stable for automation.
277+
278+
### Console Commands
279+
280+
```bash
281+
python3 skill-forge/scripts/skill_forge.py version
282+
python3 skill-forge/scripts/skill_forge.py doctor --json
283+
python3 skill-forge/scripts/skill_forge.py demo --json
284+
python3 skill-forge/scripts/skill_forge.py forge --output ./generated --install plan --json
285+
python3 skill-forge/scripts/skill_forge.py evolve --skill citation-helper --output ./generated-updates --json
286+
python3 skill-forge/scripts/skill_forge.py install ./generated/citation-helper --json
287+
python3 skill-forge/scripts/skill_forge.py uninstall citation-helper --json
288+
python3 skill-forge/scripts/skill_forge.py feedback --skill citation-helper --rating negative --feedback "Needs stronger APA handling." --json
289+
python3 skill-forge/scripts/skill_forge.py replay --skill citation-helper --skill-dir ./generated-updates/citation-helper --json
290+
python3 skill-forge/scripts/skill_forge.py release-check --json
291+
```
292+
256293
### 1. Detect opportunities
257294

258295
```bash
@@ -597,6 +634,7 @@ This version is considered a milestone because it has a real closed loop:
597634
- `v0.4.2 "Telegram Gate"`: mandatory Telegram approval for install mutations
598635
- `v0.4.3 "Safety Tightening"`: safe skill slug containment for evolution updates and clearer registry safety posture
599636
- `v0.5.0 "Signed Gate"`: HMAC-signed approval tokens bound to skill identity and source content hash; missing or non-skill sources are refused before token issuance and before install mutation; dry-run approvals can no longer install or claim Telegram audit; replay regression gate compares candidate against installed baseline; manifest writes are atomic and `flock`-locked; redactor covers IPv4/IPv6, phone numbers, JWTs, common cloud/Git tokens, Telegram bot tokens, and PEM private keys
637+
- `v1.0.0 "Forge Console"`: product-level command surface with doctor, demo, forge, evolve, install, uninstall, feedback, replay, release-check, and version commands; release checks cover the console smoke path
600638

601639
## License
602640

‎RELEASE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Manual checks:
1919
Release tag:
2020

2121
```bash
22-
git tag v0.5.0
22+
git tag v1.0.0
2323
```
2424

2525
Published package slugs:

‎skill-forge/SKILL.md‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description: Detect repeated capability gaps, convert recurring user needs into
77

88
Use this skill to turn repeated demand into a reviewed skill candidate.
99

10-
Current version: `v0.5.0 "Signed Gate"`.
10+
Current version: `v1.0.0 "Forge Console"`.
1111

1212
## Core jobs
1313

@@ -20,6 +20,7 @@ Current version: `v0.5.0 "Signed Gate"`.
2020
7. Record feedback from later usage and propose reviewed updates instead of mutating installed skills directly.
2121
8. Provide the Somnia runtime used by scheduled nightly review to find skills with bugs, weak scores, or update-worthy feedback.
2222
9. Use redacted replay cases to check whether candidates actually cover real feedback-derived tasks.
23+
10. Provide a product console (`scripts/skill_forge.py`) so agents can run doctor checks, demos, forge flows, evolution, feedback capture, replay, and release gates from one entry point.
2324

2425
## Trigger Cues
2526

@@ -47,6 +48,19 @@ Use this skill when the user or agent mentions:
4748

4849
## Commands
4950

51+
### Forge Console
52+
53+
Prefer the product console for normal use:
54+
55+
```bash
56+
python3 {baseDir}/scripts/skill_forge.py doctor --json
57+
python3 {baseDir}/scripts/skill_forge.py demo --json
58+
python3 {baseDir}/scripts/skill_forge.py forge --output ./generated --install plan --json
59+
python3 {baseDir}/scripts/skill_forge.py release-check --json
60+
```
61+
62+
Use lower-level scripts only when a workflow needs exact control over one stage.
63+
5064
### Detect
5165

5266
Run:
@@ -288,13 +302,16 @@ References:
288302
- `references/heuristics.md`
289303
- `references/skill-quality-rubric.md`
290304
- `references/milestone-architecture.md`
305+
- `references/forge-console.md`
291306

292307
Scripts:
293308
- `scripts/detect_skill_opportunities.py`
294309
- `scripts/evaluate_skill_candidate.py`
295310
- `scripts/generate_skill_scaffold.py`
296311
- `scripts/validate_skill_candidate.py`
297312
- `scripts/forge_pipeline.py`
313+
- `scripts/skill_forge.py`
314+
- `scripts/forge_console.py`
298315
- `scripts/install/propose_skill_install.py`
299316
- `scripts/install/telegram_approval.py`
300317
- `scripts/evolve/evolve_skill_pipeline.py`

‎skill-forge/VERSION‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.5.0
1+
1.0.0

‎skill-forge/agents/openai.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
interface:
22
display_name: "Skill Forge"
3-
short_description: "Detect, scaffold, validate, and signed-gate skill installs"
4-
default_prompt: "Turn a repeated capability gap into a reviewed skill candidate. Detect from .learnings, scaffold by profile, validate and score, run hidden smoke evaluation, and require a Telegram-issued signed approval token (HMAC-bound to skill name, target, method, source path, and source content hash) before any install or update mutation."
3+
short_description: "Forge Console for skill creation, validation, replay, and signed-gate installs"
4+
default_prompt: "Use the Forge Console to turn repeated capability gaps into reviewed skill candidates. Start with doctor/demo when onboarding, then forge, validate, replay, and require a Telegram-issued signed approval token (HMAC-bound to skill name, target, method, source path, and source content hash) before any install or update mutation."
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Forge Console
2+
3+
Forge Console is the product-level command surface for Skill Forge 1.0.
4+
5+
Use it when users or agents need a complete lifecycle rather than a single internal script.
6+
7+
## Command Map
8+
9+
| Command | Purpose | Mutation risk |
10+
| --- | --- | --- |
11+
| `doctor` | Check local readiness: package, Python, OpenClaw path, Telegram config, approval secret, ClawHub, CI, git state | none |
12+
| `demo` | Run the bundled citation-helper example in plan-only mode | none |
13+
| `forge` | Detect, scaffold, validate, evaluate, and optionally request install approval | install only with signed approval |
14+
| `install` | Print or apply an install proposal for a candidate skill | apply requires signed approval |
15+
| `uninstall` | Print or apply uninstall / rollback for an installed skill | apply requires signed approval |
16+
| `feedback` | Record redacted feedback for later evolution | writes feedback JSONL |
17+
| `evolve` | Propose a reviewed update from feedback and replay checks | install only with signed approval |
18+
| `replay` | Score a skill directory against replay cases | none |
19+
| `release-check` | Run release gates and secret scan | none |
20+
| `version` | Print product version | none |
21+
22+
## Product Defaults
23+
24+
- Default install mode is plan-only.
25+
- Telegram approval is required for any install or uninstall mutation.
26+
- Dry-run approval tokens cannot mutate through the pipeline.
27+
- `doctor` should be the first command when onboarding a new machine.
28+
- `demo` should be the first command when validating the installation.
29+
- `release-check` should pass before GitHub tags, ClawHub publishing, or public demos.
30+
31+
## Recommended User Flow
32+
33+
```bash
34+
python3 scripts/skill_forge.py doctor --json
35+
python3 scripts/skill_forge.py demo --json
36+
python3 scripts/skill_forge.py forge --output ./generated --install plan --json
37+
python3 scripts/skill_forge.py release-check --json
38+
```
39+
40+
Only move to `--install telegram` once the plan-only candidate is reviewed.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env python3
2+
import runpy
3+
from pathlib import Path
4+
5+
6+
if __name__ == "__main__":
7+
runpy.run_path(str(Path(__file__).resolve().parent / "skill_forge.py"), run_name="__main__")

0 commit comments

Comments
 (0)