Company context bootstrap
Skill lpalokan/bmad-marketing-growth/skills/company-context-bootstrap
Workflow that builds and maintains output/company-context/ as a Google OKF (Open Knowledge Format) bundle — ICP, positioning, brand voice, KPIs, tech-stack, plus index.md and log.md, and refreshes the project's AGENTS.md OKF block. Four modes: scratch intake, import & adapt another project's context, migrate existing non-OKF files to OKF, and ingest the input/ folder (refactor dropped files into OKF concepts and fold new knowledge in). Must be run before any v2 agent. Lead: marketing-orchestrator. Use when user says set up company context, bootstrap, initial intake, reuse/clone/import context, migrate to OKF, refactor context to OKF, ingest input folder, or add knowledge to context.From its SKILL.md
npx -y skills add lpalokan/bmad-marketing-growth --skill company-context-bootstrapAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.1 KB, as published. Nobody here has run it
Company Context Bootstrap Workflow
Overview
Builds and maintains the shared company-context/ bundle every v2 agent
reads on activation: the five core files icp.md, positioning.md,
brand-voice.md, kpis.md, tech-stack.md, plus the OKF bundle scaffold
index.md and log.md. The folder is a Google OKF v0.1 bundle — see
docs/company-context.md for the schema and workflow.yaml::okf_conventions
for the authoring rules. Run at project start; re-running refreshes files
in place (prior content shown for review before overwrite).
Four modes:
- Scratch — answer focused intake questions per core file.
- Import & adapt — point at another project's context folder (or a
parent folder of projects); the workflow discovers what's available,
lets you pick a source and which files to bring over, copies each in
(upgrading frontmatter to OKF), and walks you through adapting the
project-specific parts. See
features/import-existing-context.feature. - Migrate — upgrade an existing non-OKF
company-context/in place to the OKF bundle format (schema_version 1 → 2; bodies untouched). One-time. Seefeatures/migrate-to-okf.feature. - Ingest — read the
input/folder, refactor each file into OKF concept docs undersources/, cross-link them, and propose gated edits to the owner of any core file the new knowledge bears on. Run anytime. Seefeatures/ingest-input-folder.feature.
Source Fidelity
These rules override the persona.
- Never invent numbers about the user's business or industry. Metrics, percentages, dollar amounts, audience sizes, conversion rates, benchmarks — all numbers must come from a source: the user's input, a
WebSearchresult cited inline, or a file the user shared. Anything else is fabrication. - Missing data → ask, don't fill. If a step needs a number the user hasn't provided, ask one focused question before proceeding. Do not insert a plausible default.
- Label examples. Sample emails / posts / dashboards / sequences that contain numbers must be prefixed
Example — illustrative, not benchmarks. - Persona is style, not authority. Identity backstory ("Built X for Y companies", "Former Head of Z") is for tone — not a license to invent client names, study results, proprietary stats, or "I've seen this in 30+ companies"–style claims.
On Activation
-
Load configuration (tolerant of missing files; for each value, the first file that provides it wins):
- Try
{project-root}/_bmad/custom/config.user.toml, then{project-root}/_bmad/custom/config.toml(pinned overrides -- always win when present). - Try
{project-root}/_bmad/marketing-growth/config.yaml(BMAD 6.x module config; flat keysuser_name,communication_language,document_output_language,output_folder). - Try
{project-root}/_bmad/config.user.toml, then{project-root}/_bmad/config.toml(BMAD 6.x root config;[core]keys, e.g.output_folder,document_output_language). - Legacy fallback: try
{project-root}/_bmad/config.yaml(core.user_name,core.communication_language,core.document_output_language,marketing-growth.output_folder), with{project-root}/_bmad/config.user.yamloverridingcore.user_nameandcore.communication_language. - For any value still missing, use defaults:
user_name = there,communication_language = English,document_output_language = English. - Resolve
output_foldersilently — never ask the user. Normalize a relative value against{project-root}. Then use the first of these that already contains acompany-context/folder: the configured value,{project-root}/output,{project-root}/_bmad-output(legacy name, retired in v2.4). If none does, glob the project for**/company-context/index.mdand**/company-context/icp.md(excluding.git/,node_modules/,_bmad/,**/work/**) and use its parent when there is exactly one match. Still nothing: use{project-root}/output.output/is the canonical name;_bmad-output/is read-only compatibility — never create it.
- Try
-
Relocate a legacy
_bmad-output/bundle — automatic, one line, no question. If{project-root}/_bmad-output/holdscompany-context/orwork/(bmad-manager seeds new projects there), move this module's folders to the canonical{project-root}/output/:- Move
_bmad-output/company-context/and_bmad-output/work/into{project-root}/output/, creating it if absent. Merge, never overwrite: where a file already exists at the destination, keep the destination file and list the ones you skipped. - Leave everything else in
_bmad-output/alone.planning-artifacts/andimplementation-artifacts/belong to the bmm module and its_bmad/config.tomlstill points at them — moving those would break bmm. Delete_bmad-output/only if it is now empty. - Write no config at all. No pin is needed: once
_bmad-output/company-context/is gone andoutput/company-context/exists, step 1's rule already resolves tooutput/, because it skips any candidate that does not actually contain the bundle. Never edit_bmad/config.toml,_bmad/marketing-growth/config.yaml, or_bmad/custom/config.toml.output_folderunder[core]is shared with core, bmm, bmb and cis — they have their own_bmad/<module>/config.yamlpointing at_bmad-output, and repointing it would split their existing output across two folders. This module fixes its own folder by moving files, not by rewriting anyone's configuration. - Set
{output_folder}to{project-root}/outputfor the rest of this run, tell the user in one line what moved, and continue without asking. - Record it in the handoff
log.mdentry as a Relocation (distinct from the OKF Migration mode).
If
_bmad-output/is absent, or holds neither folder, skip this step silently — say nothing. - Move
-
Greet the user in
{communication_language}and explain: this workflow gathers the foundational knowledge the rest of the v2 marketing suite needs and writes it as an OKF v0.1 bundle under{output_folder}/company-context/(the five core files plusindex.mdandlog.md). A full scratch intake takes 20–45 minutes depending on how much is already documented; migrate and ingest are shorter. -
Locate the bundle before assuming there isn't one. Check
{output_folder}/company-context/; if that is empty or absent, glob the project for**/company-context/icp.mdand**/company-context/index.md, excluding.git/,node_modules/,_bmad/and**/work/**. One hit — use it as the bundle and say which path you found, in one line, without asking anything. Several hits — list them with file counts and ask which to use (this is the only case worth a question; guessing would be wrong). No hits — there is genuinely no bundle, and a new one goes in{output_folder}/company-context/.Then, for each existing file, show the user the current content and ask: keep / refresh / skip-this-file.
-
Ask which mode to use: scratch, import & adapt, migrate, or ingest (see the four
## Overviewmodes).-
Import & adapt: ask for a folder path and resolve it (tolerant, never guess content). Use it directly if it contains recognized context files (
icp.md,positioning.md,brand-voice.md,kpis.md,tech-stack.md); otherwise glob up to three levels below it for any folder holding two or more recognized files. That findsoutput/company-context/,_bmad-output/company-context/, a barecompany-context/, and thecontext/<company>/layout the companiondwf-marketing-skillsrepo uses — without needing the folder to be named anything in particular. One match: use it. Two or more: list each as<relative path> (N recognized files)and ask the user to choose one. If nothing resolves, say where you looked and offer to switch to scratch. Report which recognized files are present vs missing (ignore unrecognized files likebootstrap-summary.md), let the user include/exclude each, then for each included file: copy it in (upgrade frontmatter to OKF — preserveowner, add the OKF fields, bumpschema_versionto 2, setlast_updatedto today andlast_updated_by: user, StatusIn progress) and walk the user through adapting the project-specific fields. Apply Source Fidelity: never carry a number from the source project as this project's — confirm or replace each. Files missing from the source fall back to the from-scratch intake or are skipped, per the user's choice. -
Migrate: upgrade the existing non-OKF
company-context/in place to OKF — derivetype/title/description/tags/timestamp, preserveownerand the Status line, bumpschema_versionto 2, leave bodies untouched, gate each write with a diff. -
Ingest: resolve the input folder silently, same rule as
output_folder— the first of these that exists and is non-empty: a configuredinput_folder(flat key, or legacymarketing-growth.input_folder),{project-root}/input,{project-root}/_bmad-input(legacy). Default{project-root}/input. Then refactor each file into OKF concept docs undersources/(resource= original path), cross-link to the core hubs, then propose gated edits to the owner of any core file the new knowledge bears on. Apply Source Fidelity to every number. Leave the original input files untouched.
-
-
Execute the sibling
workflow.yamlphase by phase for the chosen mode (skip any intake phase whose file was imported & adapted in step 5; migrate and ingest skip intake entirely). Write every concept perworkflow.yaml::okf_conventionsand the schema indocs/company-context.md(OKF frontmatter +owner,last_updated,last_updated_by,schema_version: 2; Status line in the body). -
Always finish in the handoff phase: refresh the root
index.md(okf_version: "0.1"), append a datedlog.mdentry, and refresh themarketing-growth:okfblock in{project-root}/AGENTS.md(idempotent, gated with a diff — read it from the siblingtemplates/agents-okf-block.md). Outputs: seedocs/company-context.mdfor the file table and bundle layout.