Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/optional-developer-helper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@operatorstack/yield": minor
---

Add the explicit `yskill helper install` command and the optional developer
helper for all four SDKs. Keep `yskill bootstrap` and
`npm create @operatorstack/yield` as compatibility aliases. Package
installation does not create skills or coding-agent adapters.
54 changes: 22 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,37 +46,6 @@ coding-agent judgment, then continue with structured data in normal code.
Verified with Cursor, Codex, and Claude Code. Registry-backed project paths are
available for 73 more coding agents.

## Start with your coding agent

Run the command for your project:

| Language | Command |
| ---------- | -------------------------------------------------------------------------------------------------------------- |
| TypeScript | `npm create @operatorstack/yield@latest` |
| Python | `uvx --from yieldskill yskill bootstrap --language python` |
| Rust | `cargo install yieldskill --root .yield --locked`, then `.yield/bin/yskill bootstrap --root . --language rust` |
| Go | `go run github.com/operatorstack/yield/cmd/yskill@latest bootstrap --root . --language go` |

Yield detects the repository, language, and installed coding agents. It shows
every proposed file and dependency change. It asks before it writes. It then
installs, tests, and registers the `yield-workflow-builder` skill workflow.

Restart your coding agent. To create a new skill workflow, ask:

```text
Use Yield to create a tested skill workflow for releasing my package.
```

To convert an existing `SKILL.md`, ask:

```text
Use Yield to convert my existing release SKILL.md into a tested skill workflow.
```

The builder can create a skill workflow from a description. It can also
convert an existing `SKILL.md`. Yield does not use install hooks to change the
repository.

## Move repeated instructions into code

A release skill often starts as prose:
Expand Down Expand Up @@ -167,7 +136,7 @@ lane. Stable release execution remains pinned to an exact public version.

<!-- npm-exclude:end -->

## Advanced: build manually
## Create a workflow

### 1. Install Yield

Expand Down Expand Up @@ -262,6 +231,27 @@ Use the release skill to publish this package.
The agent follows the generated adapter, runs the canonical workflow in
`skills/release`, and asks for each required agent or user response.

## Optional: install the developer helper

Package installation does not create skills or coding-agent adapters. After
you understand the manual flow above, you can explicitly install the guided
helper:

| Language | Command |
| ---------- | ------------------------------------------------------------------------------------------------------------------- |
| TypeScript | `npm exec -- yskill helper install --language typescript` |
| Python | `uvx --from yieldskill yskill helper install --language python` |
| Rust | `cargo install yieldskill --root .yield --locked`, then `.yield/bin/yskill helper install --root . --language rust` |
| Go | `go run github.com/operatorstack/yield/cmd/yskill@latest helper install --root . --language go` |

The helper is installed as `skills/yield-workflow-builder`. It can explain,
create, convert, check, repair, upgrade, and register skill workflows. It shows
the relevant primitive, exact files, and commands before any mutation and asks
for approval. Restart your coding agent after installation.

`yskill bootstrap` and `npm create @operatorstack/yield@latest` remain
compatibility aliases for `yskill helper install`.

## How Yield runs and resumes

1. Your workflow emits one typed operation.
Expand Down
11 changes: 6 additions & 5 deletions cmd/yskill/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,19 +65,19 @@ func cmdBootstrap(args []string) error {
return err
}
if fs.NArg() != 0 {
return fmt.Errorf("bootstrap takes no positional arguments")
return fmt.Errorf("helper install takes no positional arguments")
}
plan, err := makeBootstrapPlan(*root, *language, requested)
if err != nil {
return err
}
printBootstrapPlan(plan)
if *dryRun {
fmt.Println("bootstrap: dry run complete; no files changed")
fmt.Println("helper: dry run complete; no files changed")
return nil
}
if !*yes && !confirmBootstrap(bootstrapInput) {
fmt.Println("bootstrap: cancelled; no files changed")
fmt.Println("helper: cancelled; no files changed")
return nil
}
if err := applyBootstrapPlan(plan); err != nil {
Expand All @@ -100,8 +100,9 @@ func cmdBootstrap(args []string) error {
if err := bootstrapDoctor(plan.SkillDir, plan.Root, ids); err != nil {
return fmt.Errorf("verify workflow builder adapters: %w", err)
}
fmt.Println("bootstrap: workflow builder is ready")
fmt.Println("helper: Yield developer helper is ready")
fmt.Println("next: restart your coding agent, then ask it to create or convert a skill workflow")
fmt.Println("learn: Use Yield to explain how coded skill workflows work.")
fmt.Println("create: Use Yield to create a tested skill workflow for releasing my package.")
fmt.Println("convert: Use Yield to convert my existing release SKILL.md into a tested skill workflow.")
return nil
Expand Down Expand Up @@ -220,7 +221,7 @@ func preflightBootstrapAdapter(root, path string) error {
}

func printBootstrapPlan(plan bootstrapPlan) {
fmt.Printf("bootstrap plan: language=%s root=%s\n", plan.Language, plan.Root)
fmt.Printf("helper install plan: language=%s root=%s\n", plan.Language, plan.Root)
paths := make([]string, 0, len(plan.Files)+len(plan.Adapters)+1)
for rel := range plan.Files {
paths = append(paths, filepath.Join(plan.SkillDir, filepath.FromSlash(rel)))
Expand Down
Loading