This tutorial walks you through the full platform workflow against the real Claude Code adapter โ from API key to a passing quality gate. Plan around 45 minutes. If you haven't installed the platform yet, do the quickstart first and come back.
http://localhost:8080, you're logged in as admin.claude-sonnet-4-6 or claude-opus-4-7. Generate one at console.anthropic.com. Keys are billed per token, so a few euros of credit are enough for a first tutorial.claude as a subprocess. Installation: see the Claude Code docs. Verify with claude --version.mvn verify) needs a local JDK. Verify with java -version.mvn -v. Alternatively the ./mvnw wrapper from the generated workspace works.Two ways to get the key into the platform:
sk-ant-...) and save.The key is AES-GCM-encrypted under the master key from your .env and stored in the database. Nobody sees it in plaintext after saving.
If you'd rather set it as an env var (e.g. for air-gap setups), add to your .env:
SOFTWAREFABRIK_ANTHROPIC_API_KEY=sk-ant-...
Then: docker compose down && docker compose up -d. The UI route is cleaner because it produces an audit log entry.
claudecodeTo avoid picking the adapter on every run, set the global default:
claudecode.claude-sonnet-4-6 (good price/performance for most tasks). For deeper architecture work, claude-opus-4-7 is stronger but more expensive.Changes propagate within at most 5 minutes (TTL cache). To see them immediately, click "Invalidate cache now" at the bottom of the settings page.
audit_event. Right under the value in the settings UI you can see who last changed it (user subject + timestamp).Click "New project with assistant" or navigate to /wizard:
You land in the project editor with all fields sensibly pre-filled. Among other things the wizard turned your answers into:
technologyPreferences: "Java 21, Spring Boot 3.x, Maven, Postgres 16"architecturePreferences: "Hexagonal architecture (domain / application / web / infrastructure)"qualityGates: "ArchUnit layer tests, OWASP Dependency-Check"wizard_draft. The next visit to /wizard offers "Resume draft".In the project editor click "Generate Markdown artifacts". The platform produces six files. Read them once:
PROJECT.md โ the charter. Is the vision clear? Is the audience right?INSTRUCTIONS.md โ the concrete brief for the agent. This is the most important file. Typos or ambiguities here are taken at face value by the agent.AGENTS.md โ the role description of the team. Adjust preferredModel per role if needed.WORKFLOW.md โ phase model and approval gates.DEFINITION_OF_DONE.md โ when is the run done?README.md โ entry point for the agent inside the workspace.Fix anything that's unclear. Example: if INSTRUCTIONS.md says "create CRUD endpoints", spell out which fields a Person has (name, phone, email). The more precise, the smaller the chance of hallucinations.
Keep the first run small. Click "New run" or navigate to /runs/new:
Set up the initial Maven project with Spring Boot 3.x. Create: - pom.xml with spring-boot-starter-web, spring-boot-starter-data-jpa, postgresql, h2 (test) - Application class with @SpringBootApplication - application.yml with Postgres config (local) and H2 (test profile) - a simple Person entity with id, name, phone - a PersonRepository as a Spring Data JPA repository - a REST controller with GET /persons (return all) - smoke test with @SpringBootTest that loads the context - README explaining "how to start" and "how to test"
The run is in status DRAFT. Click "Move to READY", then "Start run".
While the run executes, it goes through five main phases. At critical transitions the platform waits for your explicit approval:
| Phase | What happens | Approval? |
|---|---|---|
PROMPT_ASSEMBLY | Platform reads PROJECT.md + INSTRUCTIONS.md and builds the initial prompt. | No, automatic. |
WORKSPACE_PREPARATION | Workspace directory created, git init, artifacts copied in, initial commit. | No, automatic. |
EXECUTION | Platform launches claude --print <prompt> in the workspace. Agent writes files, makes commits. | Yes (default policy). You click "Approve" before the agent starts. |
VALIDATION | Platform launches mvn verify in the workspace. Build and tests run. | No, automatic. |
COMPLETION | On green build: status COMPLETED. On red build: NEEDS_CORRECTION. | Yes. You confirm whether the result is acceptable. |
Approval buttons appear next to the current phase. You can Approve or Reject โ rejection moves the run to CANCELED.
During the EXECUTION phase Claude Code outputs stream live into the log area. Look for:
On the right side the Git view shows branches, commits and a diff viewer. Click any commit to see its diff. That's the most honest view of what the agent actually did โ no marketing language, just code.
After COMPLETION click the "Quality gate" tab. You launch the five reviewers:
Per reviewer you see findings with severity (LOW / MEDIUM / HIGH / CRITICAL) and a confidence score. The aggregated verdict is one of:
Special rules: SECURITY/HIGH and ARCHITECTURE/CRITICAL are always blocking, regardless of policy. Reviewer crashes appear as ERROR โ they are reported, not silently swallowed.
Typical findings on a first run:
${POSTGRES_PASSWORD}.One mega-run that does everything in one go rarely works in practice. Much better: small, focused follow-up runs. On the run list there's a button at the top: "New run from last setup". Three clicks, then:
Each of these runs uses the same workspace and writes into the same Git branch. After each run finishes, you can re-run the quality gate to see if findings shrink.
The workspace lives at ./workspaces/<run-id>/ (or the path configured in settings). Switch into it and look at what the agent built:
cd ./workspaces/<run-id> ls -la git log --oneline -20 git diff HEAD~5 HEAD
You can keep working from here โ make your own commits, push to a remote, branch, merge. The platform leaves the workspace alone unless you start another run.
If you like the result, export the workspace:
# push into a fresh GitHub repo: cd ./workspaces/<run-id> git remote add origin git@github.com:your-user/phonebook-api.git git push -u origin main
| Symptom | Cause | Fix |
|---|---|---|
claude: command not found | Platform can't find the CLI on PATH. | In settings โ Adapter, set the absolute path: /usr/local/bin/claude (Linux/macOS) or C:\Users\<user>\AppData\Local\claude\claude.exe (Windows). Or set env var SOFTWAREFABRIK_CLAUDECODE_COMMAND. |
Run hangs in EXECUTION | Claude is waiting for interactive input (e.g. login required). | Check the logs. Usually the fix is to run claude manually once and log in. |
mvn verify fails immediately | Agent didn't produce a Maven project or a broken pom.xml. | Inspect the workspace by hand, understand the error, fire a follow-up run with a corrective goal. |
Quality gate says ERROR | A reviewer crashed (e.g. because the Aider CLI is missing). | The quality-gate detail shows the failure per reviewer. Disable reviewers whose CLIs aren't installed in the settings. |
| Token budget exhausted | Platform blocks new runs at 100 % of the daily budget. | Settings โ Budget. Raise the cap or wait until midnight (reset). |
Run cancelled with WORKSPACE_LOCKED | Previous run didn't release the lock (platform crash). | Delete the workspace directory, create the run again. Known edge case. |