---
title: internal/initcmd
description: Go API reference for the initcmd package.
---
# initcmd
```go
import "github.com/jbcom/radioactive-ralph/internal/initcmd"
```
Package initcmd implements \`radioactive\_ralph init\` — the per\-repo setup wizard.
Responsibilities:
1. Resolve operator preferences for each capability bias category \(review, security review, docs query, brainstorm, debugging\). Single\-candidate slots auto\-select; multi\-candidate slots defer to the caller\-provided Resolver \(interactive prompts in the CLI, scripted answers in tests\).
2. Write .radioactive\-ralph/config.toml \(committed\) and local.toml \(gitignored\) with frontmatter comments naming alternatives for later review.
3. Scaffold .radioactive\-ralph/plans/ with a starter index.md so non\-Fixit variants have the plans structure they refuse to run without.
4. Append .radioactive\-ralph/local.toml to the repo's .gitignore.
5. Refuse to clobber an existing config unless Force is true; support \-\-refresh to re\-discover capabilities while preserving the operator's choices.
## Index
- [type Options](<#Options>)
- [type Resolver](<#Resolver>)
- [type Result](<#Result>)
- [func Init\(opts Options\) \(Result, error\)](<#Init>)
## type [Options]()
Options drives Init.
```go
type Options struct {
// RepoRoot is the absolute path to the operator's repo. The
// .radioactive-ralph/ tree is created directly under it.
RepoRoot string
// Inventory is the pre-discovered capability snapshot. Callers can
// pass inventory.Discover(...).
Inventory inventory.Inventory
// Resolver handles multi-candidate category questions. If nil and
// any category has multiple candidates, Init returns an error
// rather than silently dropping the ambiguity.
Resolver Resolver
// Force overwrites an existing config.toml. Without this, Init
// refuses to clobber prior operator work.
Force bool
// Refresh rewrites config.toml from scratch but preserves existing
// operator choices from any prior config.toml that loaded cleanly.
Refresh bool
}
```
## type [Resolver]()
Resolver is the side\-channel that asks the operator to pick between multiple candidate skills when a category has more than one install. The CLI wires it to stdin prompts; tests wire it to a deterministic map lookup.
Called once per multi\-candidate category. Returning "" marks that category as "no preference"; returning a value that isn't in candidates is treated as "disabled" \(added to DisabledBiases\).
```go
type Resolver func(category variant.BiasCategory, candidates []string) (string, error)
```
## type [Result]()
Result summarizes what Init did.
```go
type Result struct {
ConfigPath string
LocalPath string
PlansPath string
GitIgnore string
Choices map[variant.BiasCategory]string
Disabled []string
}
```
### func [Init]()
```go
func Init(opts Options) (Result, error)
```
Init runs the wizard against Options. Returns a Result describing the paths it touched and the resolved choices.
Generated by [gomarkdoc]()