Skill: fortunto2/solo-init (version 2.1.1)

--- name: solo-init description: One-time founder onboarding — generates personalized manifest, STREAM calibration, dev principles, and stack selection. Use when user says "set up solo factory", "initialize profile", "configure defaults", "first time setup", or "onboard me". Safe to re-run. Do NOT use for project scaffolding (use /scaffold). license: MIT metadata: author: fortunto2 version: "2.1.1" openclaw: emoji: "🎬" allowed-tools: Read, Grep, Bash, Glob, Write, Edit, AskUserQuestion argument-hint: "[project-path]" --- # /init One-time founder onboarding. Asks key questions, generates personalized configuration files. Everything stored as readable markdown/YAML — edit anytime. Two layers of config: - **`~/.solo-factory/defaults.yaml`** — org-level (bundle IDs, GitHub org, Apple Team ID). Shared across all projects. - **`.solo/`** in project — founder philosophy, dev principles, STREAM calibration, selected stacks. Per-project but usually the same. The templates in `solo-factory/templates/` are defaults. This skill personalizes them based on your answers. Run once after installing solo-factory. Safe to re-run — shows current values and lets you update them. ## Output Structure ``` ~/.solo-factory/ └── defaults.yaml # Org defaults (bundle IDs, GitHub, Team ID) .solo/ ├── manifest.md # Your founder manifesto (generated from answers) ├── stream-framework.md # STREAM calibrated to your risk/decision style ├── dev-principles.md # Dev principles tuned to your preferences └── stacks/ # Only your selected stack templates ├── nextjs-supabase.yaml └── python-api.yaml ``` Other skills read from these: - `/scaffold` reads `defaults.yaml` for `<org_domain>`, `<apple_dev_team>` placeholders + `.solo/stacks/` for stack templates - `/validate` reads `manifest.md` for manifesto alignment check - `/setup` reads `dev-principles.md` for workflow config - `/stream` reads `stream-framework.md` for decision framework ## Steps ### 1. Check existing config - Read `~/.solo-factory/defaults.yaml` — if exists, show current values - Check if `.solo/` exists in project path - If both exist, ask: "Reconfigure from scratch?" or "Keep existing and skip?" - If neither exists, continue to step 2 ### 2. Determine project path If `$ARGUMENTS` contains a path, use it. Otherwise use current working directory. ### 3. Ask org defaults (AskUserQuestion, 5 questions) See `references/questions.md` → "Round 0: Org Defaults" for full question specs. ### 4. Create org defaults ```bash mkdir -p ~/.solo-factory ``` Write `~/.solo-factory/defaults.yaml`: ```yaml # Solo Factory — org defaults # Used by /scaffold and other skills for placeholder replacement. # Re-run /init to update these values. org_domain: "<answer from 3.1>" apple_dev_team: "<answer from 3.2>" github_org: "<answer from 3.3>" projects_dir: "<answer from 3.4>" knowledge_base_repo: "<answer from 3.5>" ``` ### 5. Ask Round 1 — Philosophy & Values (AskUserQuestion, 4 questions) See `references/questions.md` → "Round 1: Philosophy & Values" for full question specs. ### 6. Ask Round 2 — Development Preferences (AskUserQuestion, 4 questions) See `references/questions.md` → "Round 2: Development Preferences" for full question specs. ### 7. Ask Round 3 — Decision Style & Stacks (AskUserQuestion, 3 questions) See `references/questions.md` → "Round 3: Decision Style & Stacks" for full question specs. ### 8. Load default templates + generate personalized files See `references/generation-rules.md` for: - Template source locations - Output file structure (defaults.yaml, manifest.md, stream-framework.md, dev-principles.md, stacks/) - Personalization rules per file (how answers map to generated content) - Stack template mapping (answer → YAML file) ### 10. Verify Solograph MCP (optional check) - Try running `uvx solograph --help` or check if MCP tools are available - If available: "Solograph detected — code graph ready" - If not: "Tip: install Solograph for code search across projects (`pip install solograph` or `uvx solograph`)" ### 11. Summary ``` Solo Factory initialized! Org config: Config: ~/.solo-factory/defaults.yaml org_domain: <value> apple_dev_team: <value> github_org: <value> projects_dir: <value> Founder profile: Manifest: .solo/manifest.md Dev Principles: .solo/dev-principles.md STREAM: .solo/stream-framework.md Stacks: .solo/stacks/ (N stacks) These files are yours — edit anytime. Other skills read from .solo/ automatically. Next steps: /validate "your idea" — validate with your manifest /scaffold app nextjs-supabase — scaffold with your stack ``` ### Edge cases See `references/generation-rules.md` → "Edge Cases" for full list. ## Common Issues ### Templates directory not found **Cause:** solo-factory not installed as submodule or templates moved. **Fix:** Skill generates from inline knowledge if templates missing. To fix permanently, ensure `solo-factory/templates/` exists. ### Stacks not copied to .solo/ **Cause:** Stack selection answer didn't map to a template file. **Fix:** Check available stacks in `templates/stacks/`. Re-run `/init` and select from the list. ### defaults.yaml already exists **Cause:** Previously initialized. **Fix:** Skill detects existing config and asks whether to reconfigure. Choose "Reconfigure from scratch" to overwrite.

path: references/generation-rules.md
content: # /init — File Generation Rules

Referenced by SKILL.md step 8-9.

## Template Sources

Find the templates directory. Check these locations in order:
1. Skill's own repo: look for `templates/` relative to this SKILL.md (traverse up to find `solo-factory/templates/`)
2. If nothing found: use inline defaults from this skill

Read the default files:
- `templates/principles/manifest.md`
- `templates/principles/stream-framework.md`
- `templates/principles/dev-principles.md`
- `templates/stacks/*.yaml` (list available stacks)

## Output Structure

```
~/.solo-factory/
└── defaults.yaml              # Org defaults (bundle IDs, GitHub, Team ID)

.solo/
├── manifest.md                # Your founder manifesto (generated from answers)
├── stream-framework.md         # STREAM calibrated to your risk/decision style
├── dev-principles.md          # Dev principles tuned to your preferences
└── stacks/                    # Only your selected stack templates
    ├── nextjs-supabase.yaml
    └── python-api.yaml
```

## defaults.yaml Format

```yaml
# Solo Factory — org defaults
# Used by /scaffold and other skills for placeholder replacement.
# Re-run /init to update these values.

org_domain: "<answer from Round 0 Q1>"
apple_dev_team: "<answer from Round 0 Q2>"
github_org: "<answer from Round 0 Q3>"
projects_dir: "<answer from Round 0 Q4>"
solopreneur_repo: "<answer from Round 0 Q5>"
```

## manifest.md Personalization

Read the default `templates/principles/manifest.md`. Generate a PERSONALIZED version based on Round 1 answers:

- **Motivation** answers → "Why I Build" section
- **Hard no's** answers → "What I Won't Build" section
- **Data philosophy** answer → "Data & Privacy" section
- **Pricing** answer → "Pricing Philosophy" section

Keep the structure of the template but rewrite sections to reflect the founder's specific choices. Keep the "Principles" section (AI is foundation, Offline-first, One pain → one feature, Speed over perfection, Antifragile architecture) but adjust emphasis based on answers:
- If they chose "Privacy & data ownership" → emphasize "Privacy isn't a feature, it's architecture"
- If they chose "Speed to market" → emphasize "Ship > Perfect"
- If they chose "Cloud-first" → soften offline-first language, emphasize encryption instead

The generated manifest should feel personal, not templated. Use active voice, first person.

## stream-framework.md Personalization

Read the default `templates/principles/stream-framework.md`. Copy it as-is BUT add a personalized "My Calibration" section at the top based on Round 3 answers:

```markdown
## My Calibration

- **Risk style:** [their answer]
- **Ultimate filter:** [their answer]
- **Default approach:** [derived from answers]
```

Examples:
- "Barbell" + "Time" → "Default: 90% proven tech, 10% experiments. Kill anything not worth the hours."
- "Move fast" + "Learning" → "Default: ship first, learn from feedback. Every failure is data."

Keep the full 6-layer framework and 5-step decision process unchanged — these are universal.

## dev-principles.md Personalization

Read the default `templates/principles/dev-principles.md`. Copy it but personalize the "Development Workflow" section based on Round 2 answers:

- **TDD** answer → set TDD level in workflow section
- **Infrastructure** answer → adjust Infrastructure & DevOps section emphasis
- **Commits** answer → set commit style in workflow
- **Docs** answer → adjust Documentation section

All other sections (SOLID, DRY, KISS, DDD, Clean Architecture, SGR, i18n, etc.) stay as-is — they're universal.

## Stack Template Copying

For each stack selected in Round 3, copy the corresponding YAML from `templates/stacks/` to `.solo/stacks/`.

Stack names match filenames: user picks "ios-swift" → copy `templates/stacks/ios-swift.yaml`.
No hardcoded mapping needed — `templates/stacks/*.yaml` is the source of truth.

## Edge Cases

- If `~/.solo-factory/defaults.yaml` exists but `.solo/` doesn't — ask if they want to skip org defaults and just do founder profile
- If `.solo/` already exists — ask: "Reconfigure from scratch?" or "Keep existing and skip?"
- If templates directory not found — generate from inline knowledge (this skill has all the context needed)
- If user answers "Other" to any question — use their free-text input in generation
- For stacks, always show what was NOT selected: "Other available stacks: ... (run /init again to add)"


path: references/questions.md
content: # /init — AskUserQuestion Specifications

Referenced by SKILL.md step 3, 5, 6, 7.

## Round 0: Org Defaults (5 questions)

```
Question 1: "What is your reverse-domain prefix for app IDs?"
Header: "Bundle ID"
multiSelect: false
Options:
- "com.yourcompany" — "Example: com.yourcompany.myapp"
- "com.mycompany" — "Example: com.mycompany.myapp"
- "io.myname" — "Example: io.myname.myapp"

Question 2: "Apple Developer Team ID? (optional, for iOS signing)"
Header: "Apple Team"
multiSelect: false
Options:
- "Skip" — "No iOS apps, skip for now"
- "Enter Team ID" — "10-char alphanumeric, find at developer.apple.com → Membership"

Question 3: "GitHub username or org for new repos?"
Header: "GitHub"
multiSelect: false
Options:
- "your-github-username" — "Personal GitHub account"
- "my-org" — "Organization account"

Question 4: "Where do you keep projects?"
Header: "Projects dir"
multiSelect: false
Options:
- "~/projects" — "Default projects directory"
- "~/code" — "Simple code directory"
- "~/workspace" — "Workspace directory"

Question 5: "Where is your knowledge base repo? (optional)"
Header: "KB repo"
multiSelect: false
Options:
- "~/knowledge-base" — "Default knowledge base location"
- "Skip" — "No knowledge base, skip for now"
```

## Round 1: Philosophy & Values (4 questions)

```
Question 1: "What drives you to build products?"
Header: "Motivation"
multiSelect: true
Options:
- "Privacy & data ownership" — "Users own their data, on-device processing, no cloud dependency"
- "Speed to market" — "Ship fast, learn fast, iterate. Market teaches better than planning"
- "Creative freedom" — "Build what doesn't exist yet, express ideas through products"
- "Financial independence" — "Revenue-generating products, sustainable solo business"

Question 2: "What will you NEVER build?"
Header: "Hard no's"
multiSelect: true
Options:
- "Dark patterns & addiction" — "No engagement tricks, no manipulative UX, no vanity metrics"
- "Surveillance & tracking" — "No selling user data, no hidden analytics, no ad-tech"
- "Subscription traps" — "No lock-in, no cancellation friction, honest pricing"
- "Exploitation" — "No extracting value from vulnerable people, no discrimination"

Question 3: "How do you think about user data?"
Header: "Data philosophy"
multiSelect: false
Options:
- "Offline-first (Recommended)" — "All data local by default. Cloud only when user explicitly chooses"
- "Cloud-first" — "Cloud storage with strong encryption. Convenience over full local control"
- "Hybrid" — "Sensitive data local, non-sensitive in cloud. User chooses per data type"

Question 4: "Default pricing model for your products?"
Header: "Pricing"
multiSelect: false
Options:
- "Free + one-time purchase" — "Free tier with paid upgrade, no recurring fees"
- "Freemium + subscription" — "Free core, subscription for premium features"
- "Open source + services" — "Code is free, charge for hosting/support/custom work"
- "Pay once, own forever" — "One-time purchase, all updates included"
```

## Round 2: Development Preferences (4 questions)

```
Question 1: "Your TDD approach?"
Header: "Testing"
multiSelect: false
Options:
- "TDD moderate (Recommended)" — "Test business logic & APIs. Skip tests for UI layout and prototypes"
- "TDD strict" — "Test everything. Red-Green-Refactor for every feature"
- "Tests after" — "Write code first, add tests for critical paths later"
- "Minimal" — "Only test what breaks. Integration tests over unit tests"

Question 2: "How do you handle infrastructure?"
Header: "Infrastructure"
multiSelect: false
Options:
- "Serverless-first (Recommended)" — "Vercel/Cloudflare/Lambda. VPS only for persistent processes or GPU"
- "VPS / Docker" — "Hetzner/Fly.io/DigitalOcean. Full control, predictable costs"
- "Platform-managed" — "Railway/Render/Heroku. Zero DevOps, higher cost"
- "Self-hosted" — "Own hardware or dedicated servers. Maximum control"

Question 3: "Commit and code review style?"
Header: "Workflow"
multiSelect: false
Options:
- "Conventional commits + auto" — "feat:/fix:/chore: prefixes, AI auto-commits per task"
- "Squash & merge" — "Feature branches, squash on merge, clean history"
- "Trunk-based" — "Commit directly to main, small frequent changes"

Question 4: "Documentation level?"
Header: "Docs"
multiSelect: false
Options:
- "CLAUDE.md + AICODE comments (Recommended)" — "AI-optimized docs: CLAUDE.md, AICODE-NOTE/TODO/ASK in code"
- "Comprehensive" — "Full docs: README, CLAUDE.md, ADRs, inline comments, API docs"
- "Minimal" — "README + code comments only. Code should be self-documenting"
```

## Round 3: Decision Style & Stacks (3 questions)

```
Question 1: "How do you make decisions?"
Header: "Risk style"
multiSelect: false
Options:
- "Barbell: safe + bold bets" — "90% conservative, 10% high-risk/high-reward experiments"
- "Calculated risks" — "Research thoroughly, then commit. Reversible decisions fast, irreversible slow"
- "Move fast, fix later" — "Speed over analysis. Default to action, course-correct on feedback"
- "Conservative" — "Proven technologies, established markets. Minimize downside"

Question 2: "What's your ultimate filter for decisions?"
Header: "Priority"
multiSelect: false
Options:
- "Time (Recommended)" — "Time is the only non-renewable resource. Is this worth my finite hours?"
- "Learning" — "Every project is an experiment. Optimize for skills and knowledge gained"
- "Impact" — "Will this change something for real people? Meaningful > profitable"
- "Freedom" — "Does this increase or decrease my optionality and independence?"

Question 3: "Which stacks do you work with?"
Header: "Stacks"
multiSelect: true
Options: dynamically built from `templates/stacks/*.yaml` — read each YAML's `name` and `description` fields.
Show the 4 most popular as options (nextjs-supabase, ios-swift, python-api, python-ml).
```

If user selects "Other" for stacks, list remaining stacks from `templates/stacks/*.yaml` as follow-up options.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)