Skip to content

software factory: add skills for running the boxel software factory inside any AI coding agent#4843

Open
jurgenwerk wants to merge 4 commits into
mainfrom
cs-11149-create-a-set-of-skills-extracted-from-the-orchestrator
Open

software factory: add skills for running the boxel software factory inside any AI coding agent#4843
jurgenwerk wants to merge 4 commits into
mainfrom
cs-11149-create-a-set-of-skills-extracted-from-the-orchestrator

Conversation

@jurgenwerk
Copy link
Copy Markdown
Contributor

@jurgenwerk jurgenwerk commented May 15, 2026

Why

Today's software factory runs through pnpm factory:go — a Node process driving the Claude Agent SDK. Starting June 15, 2026, Anthropic carves Agent SDK usage out of the regular Claude subscription into a separate, smaller monthly credit pool. Interactive Claude Code sessions stay uncapped.

This PR teaches the factory to run from inside an interactive Claude Code session. You paste one prompt; the agent does the whole run.

Both type of factories coexist for now

The SDK orchestrator (pnpm factory:go) is untouched and still works on this branch. The two paths get separate skill directories so they don't fight:

  • .agents/skills-orchestrator/ — pre-rewrite content (the orchestrator's factory-MCP tool surface). Read by factory-skill-loader.ts.
  • .agents/skills/ — rewritten for the interactive flow (the boxel CLI surface). Read by Claude Code via .claude/skills.

When the orchestrator is retired in a follow-up, both go together.

Depends on

This PR uses three new validator commands on @cardstack/boxel-cli (lint, parse, test) which are landing separately in #4881. Merge that one and republish boxel-cli to npm first; then this PR's setup is just a normal CLI install.

How to try it

One-time setup:

pnpm i -g @cardstack/boxel-cli
boxel --version    # should list lint, parse, test in --help

# `boxel parse` and `boxel test` need a few extra bits (monorepo-only
# until the follow-up tickets ship — see "Deliberately deferred" below)
pnpm --filter @cardstack/host build
npx playwright install chromium

Run a factory:

unset ANTHROPIC_API_KEY                                # use subscription
mise run dev-all                                       # in another terminal
cd /path/to/boxel/packages/software-factory && claude  # cwd matters: skills live here

In the Claude session, paste:

Run the software factory on http://localhost:4201/software-factory/Wiki/sticky-note into a fresh target realm at http://localhost:4201/user/factory-test-<your-handle>/. Follow docs/runbook.md.

The agent creates a scratch workspace in mktemp -d, bootstraps the realm, works each implementation Issue, runs all five validators (with bail-out limits), persists audit-trail cards under Validations/, marks the project completed. View the result in the Boxel host UI.

Richer briefs: recipe, gradebook, or any of the Wiki briefs.

What's in this PR

  • 3 vendor-neutral skills under .agents/skills/: software-factory-bootstrap, software-factory-scheduling, software-factory-operations. These drive the interactive flow.
  • The runbook at packages/software-factory/docs/runbook.md.
  • Orchestrator skills snapshot at .agents/skills-orchestrator/ so the existing SDK orchestrator keeps working with its original tool surface.
  • Skill loader path change so the orchestrator loads from .agents/skills-orchestrator/ while interactive Claude Code reads .agents/skills/.

The agent owns the whole loop with bail-out limits (8 iterations / 3 identical failures / 5 attempts) so it can't spiral. Failed Issues end up blocked with a comment; the agent moves on. Project flips to completed only when every Issue is done.

Deliberately deferred

  • Retiring the SDK orchestrator — separate PR once interactive has soaked.
  • boxel parse outside the monorepo. Today it runs glint locally with monorepo paths. The proper fix is a realm-server _parse endpoint mirroring _lint — tracked in a follow-up ticket.
  • boxel test outside the monorepo. Today it drives a headless Chromium against the host app's compiled dist/. Same proper fix: a built-in realm-server QUnit harness so end users don't need Playwright + Chromium locally — tracked in a follow-up ticket.
  • A /factory-run slash command wrapping the prompt — follow-up.

Validated against

Single-prompt end-to-end runs (no manual intervention) against sticky-note and recipe briefs. Both produce a populated target realm with the full set of expected artifacts including Validations/. The SDK orchestrator path is unchanged (pnpm --filter @cardstack/software-factory test still passes).

How to review

The three skill markdown files under packages/software-factory/.agents/skills/ are the substantive surface. Everything else is small and self-contained. .agents/skills-orchestrator/ is a verbatim snapshot of main — skip it.

🤖 Generated with Claude Code

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 29c7c40c24

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"@cardstack/postgres": "workspace:*",
"@cardstack/runtime-common": "workspace:*",
"@glint/ember-tsc": "catalog:",
"@playwright/test": "catalog:",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Move Playwright to runtime deps or lazy-load the test command

@playwright/test is added under devDependencies, but the CLI eagerly imports ./commands/test during startup and that module has a top-level import { chromium } from '@playwright/test'. In normal npm/global installs, dev dependencies are not installed, so even unrelated commands (for example boxel --help or boxel profile list) will fail at process start with a module-resolution error before argument parsing. This needs either a runtime dependency or deferred import inside the test command path.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Claude here, replying on behalf of @jurgenwerk.)

Good catch — fixed in 177b531. Moved the import { chromium } from the top of commands/test.ts into an async function loadChromium() invoked only inside the runner. boxel --help and every other subcommand no longer touches @playwright/test, so a published install without devDeps boots cleanly. The loader throws a clear error pointing at the install steps if boxel test is ever invoked without Playwright present.

| Realm creation | `boxel run-command create-realm` (or `boxel realm create`) |
| Workspace pull / push | `boxel pull` / `boxel push` (realm-sync skill) |
| Federated search | `boxel search --realm <url> --query '<json>'` (boxel-api skill) |
| Card-type schema | `boxel run-command get-card-type-schema --realm <url> --input '{module,name}'` |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Replace invalid run-command shorthand in factory runbook

The documented invocation boxel run-command get-card-type-schema ... is not a valid run-command specifier for this CLI; run-command expects a full command module reference (for example @cardstack/boxel-host/commands/get-card-type-schema/default). Following the runbook as written will error immediately, which blocks bootstrap and per-issue validation flows that depend on these calls. Update the runbook/skills to use valid specifiers (or a supported alternative command).

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Claude here, replying on behalf of @jurgenwerk.)

Already addressed in earlier fix-up commits. The file was renamed to docs/runbook.md and every run-command get-card-type-schema reference was rewritten to the full @cardstack/boxel-host/commands/get-card-type-schema/default form with the codeRef wrapper. Grep confirms zero remaining shorthand uses across the runbook and the three skill files.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 15, 2026

Host Test Results

    1 files  ±  0      1 suites  ±0   1h 21m 7s ⏱️ - 11m 17s
2 199 tests  - 466  2 180 ✅  - 470  15 💤 ±0  2 ❌ +2  2 🔥 +2 
2 217 runs   - 467  2 196 ✅  - 473  15 💤 ±0  4 ❌ +4  2 🔥 +2 

Results for commit ca6abfa. ± Comparison against earlier commit 4f46d82.

For more details on these errors, see this check.

Realm Server Test Results

    1 files  ±    0      1 suites  ±0   8m 29s ⏱️ -1s
1 408 tests ±    0  1 407 ✅  -     1  0 💤 ±0  1 ❌ +1 
2 990 runs  +1 495  2 989 ✅ +1 494  0 💤 ±0  1 ❌ +1 

Results for commit 4f46d82. ± Comparison against earlier commit f63fe93.

For more details on these errors, see this check.

@jurgenwerk jurgenwerk marked this pull request as draft May 15, 2026 09:37
@jurgenwerk jurgenwerk changed the title CS-11149: Phase 1 — validator CLIs + skills for interactive factory runs software factory: explore running it from Claude Code as an orchestrator May 15, 2026
@jurgenwerk jurgenwerk changed the title software factory: explore running it from Claude Code as an orchestrator Run the software factory from Claude Code May 15, 2026
@jurgenwerk jurgenwerk changed the title Run the software factory from Claude Code software factory: explore running it just using Claude Code + Skills + Boxel CLI May 15, 2026
@jurgenwerk jurgenwerk changed the title software factory: explore running it just using Claude Code + Skills + Boxel CLI software factory: explore running it only using Claude Code + Skills + Boxel CLI May 15, 2026
@jurgenwerk jurgenwerk requested a review from Copilot May 18, 2026 14:06
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds an interactive Claude Code-based software factory flow alongside the existing SDK orchestrator, with new Boxel CLI validator commands and rewritten factory skills/runbook for the agent-owned loop.

Changes:

  • Adds top-level boxel lint, boxel parse, and boxel test commands for realm validation.
  • Splits software-factory skills into SDK (.agents/skills-sdk) and interactive (.agents/skills) paths.
  • Adds interactive runbook and updates Claude/factory documentation for the new workflow.

Reviewed changes

Copilot reviewed 16 out of 18 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
pnpm-lock.yaml Adds lockfile entries for new CLI validation dependencies.
packages/boxel-cli/package.json Adds Glint and Playwright dependencies for parse/test commands.
packages/boxel-cli/bin/boxel.js Makes ts-node fallback use the package tsconfig explicitly.
packages/boxel-cli/scripts/build.ts Externals Playwright packages from the esbuild bundle.
packages/boxel-cli/src/build-program.ts Registers the new top-level validation commands.
packages/boxel-cli/src/lib/find-package-root.ts Adds helper for locating the boxel-cli package root.
packages/boxel-cli/src/commands/lint.ts Adds realm-wide/single-file top-level lint command.
packages/boxel-cli/src/commands/parse.ts Adds Glint/JSON parse validation command.
packages/boxel-cli/src/commands/test.ts Adds browser-driven QUnit realm test command.
packages/software-factory/src/factory-skill-loader.ts Points SDK orchestrator skill loading at .agents/skills-sdk.
packages/software-factory/docs/runbook.md Adds the interactive factory runbook.
packages/software-factory/.gitignore Ignores local factory test realm mirrors.
packages/software-factory/.claude/CLAUDE.md Documents separate SDK and interactive skill paths.
packages/software-factory/.agents/skills/software-factory-bootstrap/SKILL.md Rewrites bootstrap instructions for interactive flow.
packages/software-factory/.agents/skills/software-factory-scheduling/SKILL.md Adds scheduling/status lifecycle skill for interactive flow.
packages/software-factory/.agents/skills/software-factory-operations/SKILL.md Rewrites operations skill around CLI validators and validation cards.
packages/software-factory/.agents/skills-sdk/software-factory-bootstrap/SKILL.md Adds SDK snapshot of bootstrap skill.
packages/software-factory/.agents/skills-sdk/software-factory-operations/SKILL.md Adds SDK snapshot of operations skill.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/boxel-cli/package.json
Comment thread packages/boxel-cli/src/commands/test.ts
Comment thread packages/boxel-cli/src/commands/parse.ts
Comment thread packages/software-factory/docs/runbook.md Outdated
jurgenwerk added a commit that referenced this pull request May 18, 2026
Six fixes from the bot reviewers (codex + Copilot) on PR #4843:

1. **Lazy-load Playwright in `boxel test`.** `commands/test.ts` had a
   top-level `import { chromium } from '@playwright/test'`, but
   `@playwright/test` is a devDependency and external in our esbuild
   bundle. A published-from-npm install would crash on every `boxel`
   invocation (including `boxel --help`) with MODULE_NOT_FOUND before
   Commander could parse args. Moved the chromium load behind an
   `async function loadChromium()` invoked only inside the test
   runner, with a clear error message pointing the user at the
   install step when it isn't available.

2. **Zero `*.test.gts` → validator failure, not pass.** The previous
   behavior silently returned `status: 'passed'` for a realm with
   no tests, which would let the agent mark an Issue done without
   ever writing one. Now returns `status: 'failed'` with an
   errorMessage spelling out the contract.

3. **Bounded-poll Spec discovery in `boxel parse`.** Search index
   settles asynchronously, so a `boxel realm push` immediately
   followed by `boxel parse` could see zero Specs in the index and
   silently skip the freshly-pushed `linkedExamples` JSON files —
   `boxel parse` would report passed when it shouldn't have. Wrapped
   the Spec search in a 30s/250ms retryWithPoll matching the
   factory's own parse engine.

4. **Capability table fix.** The runbook listed
   `boxel run-command create-realm` as an option; no such host
   command exists. Realm creation is the native `boxel realm create
   <slug> "<display>"` subcommand only. Removed the bogus
   alternative.

5. **Verify ALL three subcommands explicitly in skill setup.** The
   previous `grep -qE '(lint|parse|test)'` would succeed if any one
   of them appeared in `boxel --help`, letting a partially-stale
   dist pass setup and then fail mid-run on the missing validator.
   Both skills now loop over `lint parse test` individually with
   an anchored grep, and report which one is missing.

6. Stale `run-command get-card-type-schema` shorthand from the
   earlier review comment had already been corrected during prior
   fix-up commits; grep confirms no remaining references.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jurgenwerk jurgenwerk changed the title software factory: explore running it only using Claude Code + Skills + Boxel CLI software factory: skills for running the software factory inside Claude Code agent May 19, 2026
@jurgenwerk jurgenwerk changed the title software factory: skills for running the software factory inside Claude Code agent feat(software-factory): skills for running the software factory inside Claude Code agent May 19, 2026
@jurgenwerk jurgenwerk changed the title feat(software-factory): skills for running the software factory inside Claude Code agent software factory: skills for running the software factory inside Claude Code agent May 19, 2026
@jurgenwerk jurgenwerk force-pushed the cs-11149-create-a-set-of-skills-extracted-from-the-orchestrator branch from 4f46d82 to ca6abfa Compare May 19, 2026 08:56
@jurgenwerk jurgenwerk changed the base branch from main to cs-11149a-boxel-cli-validators May 19, 2026 08:56
@jurgenwerk jurgenwerk changed the title software factory: skills for running the software factory inside Claude Code agent feat(software-factory): skills for running the software factory inside Claude Code agent May 19, 2026
@jurgenwerk jurgenwerk changed the base branch from cs-11149a-boxel-cli-validators to main May 19, 2026 09:20
…Code

Adds the vendor-neutral skills that drive the software factory from
inside an interactive Claude Code session, plus the runbook that
documents how to use them:

- `.agents/skills/software-factory-bootstrap` (rewritten)
- `.agents/skills/software-factory-operations` (rewritten)
- `.agents/skills/software-factory-scheduling` (new)
- `.agents/skills-sdk/{bootstrap,operations}` — verbatim pre-rewrite
  snapshots for the existing SDK orchestrator path
- `docs/runbook.md` — single-prompt end-to-end flow
- `src/factory-skill-loader.ts` — load from `.agents/skills-sdk/` so
  the orchestrator and interactive flow don't fight
- `.claude/CLAUDE.md` — documents the dual skill directories
- `.gitignore` — ignore the `factory-test-*/` mktemp workspaces

The boxel-cli validator commands (`lint`, `parse`, `test`) the skills
call are added in #4881. This PR depends on that one merging first.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jurgenwerk jurgenwerk force-pushed the cs-11149-create-a-set-of-skills-extracted-from-the-orchestrator branch from ca6abfa to 9e8e868 Compare May 19, 2026 09:26
@jurgenwerk jurgenwerk requested a review from Copilot May 19, 2026 12:11
@jurgenwerk jurgenwerk changed the title feat(software-factory): skills for running the software factory inside Claude Code agent software factory: add skills for running the software factory inside Claude Code agent May 19, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (1)

packages/software-factory/.agents/skills/software-factory-operations/SKILL.md:351

  • This boxel run-command ... instantiate-card example similarly omits --json and describes passed/error/stackTrace as if they are top-level fields. In practice boxel run-command --json emits { status, result, error } and the command payload must be extracted by parsing the result string. Update the example/wording so the agent can programmatically map outputs into InstantiateResult validation cards.
boxel run-command @cardstack/boxel-host/commands/instantiate-card/default \
  --realm "$REALM" \
  --input "$(jq -nc --arg m "$MODULE" --arg n "$CARD_NAME" --arg r "$REALM" --arg d "$INSTANCE_DATA" \
              '{moduleIdentifier:$m, cardName:$n, realmIdentifier:$r, instanceData:$d}')"

Result fields: passed (bool), and on failure error + stackTrace.

</details>

MODULE="http://localhost:4201/user/my-realm/sticky-note"
REALM="http://localhost:4201/user/my-realm/"
CARD_NAME="StickyNote"
INSTANCE_PATH="StickyNotes/note-1.json"
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Claude here, replying on behalf of @jurgenwerk.)

Fixed in 35a9a01 — example now uses StickyNote/note-1.json (singular, named exactly after the card type). Confirmed against the convention in packages/experiments-realm/ and the catalog realm (e.g. Account/, BlogPost/, Booking/, CocktailRecipe/). Added an inline comment to the example so future readers don't get tempted to pluralize.

Comment on lines +301 to +310
```bash
MODULE="http://localhost:4201/user/my-realm/sticky-note"
REALM="http://localhost:4201/user/my-realm/"
boxel run-command @cardstack/boxel-host/commands/evaluate-module/default \
--realm "$REALM" \
--input "$(jq -nc --arg m "$MODULE" --arg r "$REALM" \
'{moduleIdentifier:$m, realmIdentifier:$r}')"
```

Result fields: `passed` (bool), and on failure `error` + `stackTrace`.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Claude here, replying on behalf of @jurgenwerk.)

Fixed in 35a9a01. The evaluate-module and instantiate-card examples now pass --json and the result-field paragraph correctly describes the wrapper: boxel run-command --json returns {status, result, error} where result is a JSON string, and the command's own passed / error / stackTrace live at data.attributes inside the parsed result. Added a jq one-liner showing how to reach the passed boolean (.result | fromjson | .data.attributes.passed).

Comment on lines +23 to +29
## Skill loading

The agent's instructions live in `.agents/skills/`. The factory loader
(`src/factory-skill-loader.ts`) walks three directories:

1. `packages/software-factory/.agents/skills/` — factory-specific skills
(`software-factory-bootstrap`, `software-factory-operations`).
2. `packages/boxel-cli/plugin/skills/` — boxel-cli Claude Code plugin
skills (`boxel-api`, `boxel-command`); same directory the plugin
distributes to end users.
3. monorepo root `.agents/skills/` — general domain skills
(`boxel-development`, `boxel-file-structure`, `ember-best-practices`).

`packages/software-factory/.claude/skills` is a symlink to
`.agents/skills/` so Claude Code and the factory loader read the same
files.
Two parallel skill paths exist, one per factory run mode:

- **SDK orchestrator** (`pnpm factory:go`): the loader at
`src/factory-skill-loader.ts` reads from
**`.agents/skills-sdk/`** first. Those skills describe the
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Claude here, replying on behalf of @jurgenwerk.)

Fixed in 35a9a01. packages/software-factory/AGENTS.md now documents both skill directories explicitly: .agents/skills-orchestrator/ for the SDK orchestrator (pnpm factory:go) and .agents/skills/ for interactive Claude Code (via the .claude/skills symlink). The factory-skill-loader.ts description was also updated to name skills-orchestrator/ as the primary directory.

(FYI we renamed the directory from skills-sdk/skills-orchestrator/ in commit 8e09be6 after this comment was written; "SDK" was too ambiguous.)

jurgenwerk and others added 2 commits May 19, 2026 14:18
`skills-sdk` was too ambiguous — "SDK" doesn't convey what the
directory holds. `skills-orchestrator` names the actual consumer
(the `pnpm factory:go` Node orchestrator) and parallels
`.agents/skills/` (consumed by interactive Claude Code).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Fix instance-folder example: `StickyNotes/` → `StickyNote/` (folders
  named after the card type singular, matching catalog/experiments
  realm convention).
- Show `--json` on `evaluate-module` and `instantiate-card` examples,
  and document the actual wrapper shape: `boxel run-command --json`
  returns `{status, result, error}` where `result` is a JSON string;
  the command's own `passed`/`error`/`stackTrace` fields live at
  `data.attributes` inside the parsed result, not at the top level.
- Update `packages/software-factory/AGENTS.md` to reflect the two
  parallel skill directories (`.agents/skills-orchestrator/` for the
  SDK orchestrator, `.agents/skills/` for interactive Claude Code).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jurgenwerk jurgenwerk marked this pull request as ready for review May 19, 2026 12:32
@jurgenwerk jurgenwerk requested a review from a team May 19, 2026 12:33
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 35a9a013e8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +41 to +42
for cmd in lint parse test; do
echo "$help_output" | grep -qE "^[[:space:]]+$cmd[[:space:]]" || {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use real CLI commands in the bootstrap gate

In this interactive flow, the first bootstrap step runs this check before creating or pulling the target realm, but the checked-in boxel program does not expose top-level lint, parse, or test subcommands: buildBoxelProgram only registers file, realm, run-command, search, etc., and the existing lint command is registered as boxel file lint. With the repo CLI (and any global install built from it), boxel --help will not match these names, so the agent exits immediately and the new runbook cannot start. Either gate on commands that actually exist or add/register the documented top-level validator commands.

Useful? React with 👍 / 👎.

@jurgenwerk jurgenwerk changed the title software factory: add skills for running the software factory inside Claude Code agent software factory: add skills for running the boxel software factory inside any AI code agent May 19, 2026
@jurgenwerk
Copy link
Copy Markdown
Contributor Author

I tested this using Claude Code (With Opus 4.7), and also opencode agent (Qwen 3.6 free) and the factory run worked ok!

@jurgenwerk jurgenwerk changed the title software factory: add skills for running the boxel software factory inside any AI code agent software factory: add skills for running the boxel software factory inside any AI coding agent May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants