diff --git a/.claude/WORKFLOW.md b/.claude/WORKFLOW.md index 3a183fb..1c5fa64 100644 --- a/.claude/WORKFLOW.md +++ b/.claude/WORKFLOW.md @@ -66,11 +66,11 @@ flowchart TD | Directory | Nickname | Owner | Consumers | |-----------|----------|-------|-----------| -| `docs/prds/` | PRDs (staging) | Alice (writes); af-ship-orch (saves external) | User review; may move to Notion | -| `docs/tech-designs/` | Tech designs (staging) | Dave (writes); af-ship-orch (saves external) | User review; may move to Notion | -| `docs/features/` | Feature catalog | Dave (writes F-NNN) | Alice, Bob, Erin (read) | -| `docs/issue-cases/` | Scar book | Human / eng team | Alice, Dave, Bob, Erin (read) | -| `docs/researches/` | Research log | Bob (writes R-NNN) | Alice (via challenge loop) | +| `internal-docs/prds/` | PRDs (staging) | Alice (writes); af-ship-orch (saves external) | User review; may move to Notion | +| `internal-docs/tech-designs/` | Tech designs (staging) | Dave (writes); af-ship-orch (saves external) | User review; may move to Notion | +| `internal-docs/features/` | Feature catalog | Dave (writes F-NNN) | Alice, Bob, Erin (read) | +| `internal-docs/issue-cases/` | Scar book | Human / eng team | Alice, Dave, Bob, Erin (read) | +| `internal-docs/researches/` | Research log | Bob (writes R-NNN) | Alice (via challenge loop) | | `docs/payloads/` | Payload map | Erin (writes P-NNN, FIELD_MAP) | Alice, Dave (via challenge loop) | --- @@ -100,7 +100,7 @@ If unsure whether a task is maintenance or a feature → use `/af-ship`. ``` /af-ship → af-ship-orch creates task wizard → calls alice-pm - → Alice writes PRD → saves to docs/prds/.md → asks user to review + → Alice writes PRD → saves to internal-docs/prds/.md → asks user to review → User approves PRD → Alice invokes Bob and/or Erin if needed → Bob/Erin produce findings → Alice challenges (max 2 iterations) @@ -111,7 +111,7 @@ If unsure whether a task is maintenance or a feature → use `/af-ship`. **From existing PRD:** ``` /af-ship-from-prd (or /af-ship --prd ) - → af-ship-orch fetches / reads PRD → saves to docs/prds/.md → calls alice-pm + → af-ship-orch fetches / reads PRD → saves to internal-docs/prds/.md → calls alice-pm → Alice challenges PRD for completeness → resolves gaps with user → Alice delegates to Bob/Erin/Dave (no second review pause) → [Phase 1 / 2 / 3 below] @@ -120,7 +120,7 @@ If unsure whether a task is maintenance or a feature → use `/af-ship`. **From existing tech design:** ``` /af-ship-from-tech-design (or /af-ship --tech-design ) - → af-ship-orch fetches / reads tech design → saves to docs/tech-designs/.md → calls alice-pm + → af-ship-orch fetches / reads tech design → saves to internal-docs/tech-designs/.md → calls alice-pm → Alice runs full challenge agenda → Dave addresses issues (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." → [Phase 2 / 3 below — Phase 1 skipped, PRD gate bypassed] @@ -128,7 +128,7 @@ If unsure whether a task is maintenance or a feature → use `/af-ship`. **Phase 1 — Tech design** ``` - → Dave writes tech design → saves to docs/tech-designs/.md + → Dave writes tech design → saves to internal-docs/tech-designs/.md → Alice challenges tech design (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." → Dave asks user to review tech design @@ -145,7 +145,7 @@ If unsure whether a task is maintenance or a feature → use `/af-ship`. **Phase 3 — Feature doc** ``` → Dave runs impact scan → updates any affected existing F-NNN docs - → Dave writes new F-NNN feature doc → saves to docs/features/ + → Dave writes new F-NNN feature doc → saves to internal-docs/features/ → Alice challenges feature doc (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." ``` diff --git a/.claude/commands/af-quiz-me.md b/.claude/commands/af-quiz-me.md index 1cfc50f..e58f4bc 100644 --- a/.claude/commands/af-quiz-me.md +++ b/.claude/commands/af-quiz-me.md @@ -3,22 +3,22 @@ Generate an interactive HTML quiz from a tech design document. ## Step 1 — Resolve the document **If $ARGUMENTS is empty:** -List all `.md` files in `docs/tech-designs/`. +List all `.md` files in `internal-docs/tech-designs/`. - If files exist, list them and ask: "Which tech design should I quiz you on? (Reply with the number or filename) Or reply **project** to generate a quiz covering the whole project from the feature catalog." Wait for the user's selection before continuing. - If the folder does not exist or is empty, ask: - "No tech designs found in `docs/tech-designs/`. What would you like to do? + "No tech designs found in `internal-docs/tech-designs/`. What would you like to do? 1. Provide a path or Notion URL (reply with the path/URL) 2. Generate a project quiz from the feature catalog (reply **project**)" Wait for the user's reply before continuing. **If the user replies `project` (or $ARGUMENTS is `project`):** -Check whether `docs/features/INDEX.md` exists. +Check whether `internal-docs/features/INDEX.md` exists. - If it does not exist, stop and say: - "No feature catalog found. Run `/af-generate-feature-catalog` first to build `docs/features/`, then try again." -- If it exists, read `docs/features/INDEX.md` to get the full list of features, then read each individual `docs/features/F-*.md` file. + "No feature catalog found. Run `/af-generate-feature-catalog` first to build `internal-docs/features/`, then try again." +- If it exists, read `internal-docs/features/INDEX.md` to get the full list of features, then read each individual `internal-docs/features/F-*.md` file. Set `` to `project` and `` to the project name derived from `INDEX.md` (e.g. `MyProject — Project Quiz`). Proceed to Step 3 in **project mode** (random 10 questions across all features). diff --git a/.claude/commands/af-ship-from-prd.md b/.claude/commands/af-ship-from-prd.md index 7ddf754..7224dbd 100644 --- a/.claude/commands/af-ship-from-prd.md +++ b/.claude/commands/af-ship-from-prd.md @@ -1,7 +1,7 @@ If $ARGUMENTS is empty, stop and ask: "Please provide a Notion URL or a path to a local .md file for the PRD. Example: `/af-ship-from-prd https://notion.so/team/my-prd` -Example: `/af-ship-from-prd docs/prds/my-feature.md`" +Example: `/af-ship-from-prd internal-docs/prds/my-feature.md`" Do not proceed until the user provides a URL or path. Start the feature delivery workflow using an existing PRD. diff --git a/.claude/commands/af-ship-from-tech-design.md b/.claude/commands/af-ship-from-tech-design.md index dba0b2e..4516843 100644 --- a/.claude/commands/af-ship-from-tech-design.md +++ b/.claude/commands/af-ship-from-tech-design.md @@ -1,7 +1,7 @@ If $ARGUMENTS is empty, stop and ask: "Please provide a Notion URL or a path to a local .md file for the tech design. Example: `/af-ship-from-tech-design https://notion.so/team/my-design` -Example: `/af-ship-from-tech-design docs/tech-designs/my-feature.md`" +Example: `/af-ship-from-tech-design internal-docs/tech-designs/my-feature.md`" Do not proceed until the user provides a URL or path. Start the delivery workflow using an existing tech design. diff --git a/.claude/commands/af-ship.md b/.claude/commands/af-ship.md index d9caf95..d75be3b 100644 --- a/.claude/commands/af-ship.md +++ b/.claude/commands/af-ship.md @@ -13,7 +13,7 @@ The PRD source is the value extracted from $ARGUMENTS after `--prd `. Extract the URL or path that follows `--tech-design `. If nothing follows `--tech-design`, stop and ask: "Please provide a Notion URL or local .md path after --tech-design -(e.g. `/af-ship --tech-design docs/tech-designs/my-feature.md`)." +(e.g. `/af-ship --tech-design internal-docs/tech-designs/my-feature.md`)." Do not proceed until a URL or path is provided. Otherwise: invoke the `af-ship-orch` skill in Tech-Design-Given mode. The tech design source is the value extracted from $ARGUMENTS after `--tech-design `. diff --git a/.claude/prompts/generate-feature-catalog.md b/.claude/prompts/generate-feature-catalog.md index d97884a..8b5fc51 100644 --- a/.claude/prompts/generate-feature-catalog.md +++ b/.claude/prompts/generate-feature-catalog.md @@ -1,6 +1,6 @@ # Prompt: Create Feature Catalog -Use this prompt to generate a `docs/features/` catalog for this project. +Use this prompt to generate a `internal-docs/features/` catalog for this project. Values below are filled during workflow setup — edit them here if needed. --- @@ -20,7 +20,7 @@ JIRA_PROJECT_KEY: DELIVERY ## Prompt ```` -Create a feature catalog for this project under `docs/features/`. +Create a feature catalog for this project under `internal-docs/features/`. Project context: Flutter plugin providing mobile attribution and analytics for iOS and Android, bridging native AppsFlyer SDKs via Dart MethodChannel/EventChannel Primary language(s): Dart, Objective-C, Java, Kotlin @@ -143,7 +143,7 @@ Mark "Propose taxonomy" as completed. Mark "User reviews taxonomy" as `in_progre --- -## Phase 3 — Create `docs/features/` +## Phase 3 — Create `internal-docs/features/` Mark "User reviews taxonomy" as completed. Mark "Write feature catalog" as `in_progress`. diff --git a/.claude/prompts/generate-issue-cases.md b/.claude/prompts/generate-issue-cases.md index 5335385..2dadc80 100644 --- a/.claude/prompts/generate-issue-cases.md +++ b/.claude/prompts/generate-issue-cases.md @@ -16,12 +16,12 @@ LANGUAGES: Dart, Objective-C, Java, Kotlin ## TASK -Mine this repository's full git history across all branches and generate `docs/issue-cases/` — an engineering issue case bank with a hot zones map and two-axis classification (Component × Bug Class). +Mine this repository's full git history across all branches and generate `internal-docs/issue-cases/` — an engineering issue case bank with a hot zones map and two-axis classification (Component × Bug Class). Project context: Flutter plugin providing mobile attribution and analytics for iOS and Android, bridging native AppsFlyer SDKs via Dart MethodChannel/EventChannel Primary language(s): Dart, Objective-C, Java, Kotlin -Create `docs/issue-cases/INDEX.md`, `docs/issue-cases/TEMPLATE.md`, `docs/issue-cases/GUARDRAILS.md`, and individual `IC-NNN-*.md` files. +Create `internal-docs/issue-cases/INDEX.md`, `internal-docs/issue-cases/TEMPLATE.md`, `internal-docs/issue-cases/GUARDRAILS.md`, and individual `IC-NNN-*.md` files. --- @@ -63,7 +63,7 @@ echo "Mining years: $START_YEAR to $CURRENT_YEAR" Create the staging directory: ```bash -mkdir -p docs/issue-cases/partial +mkdir -p internal-docs/issue-cases/partial ``` For each year from `$START_YEAR` to `$CURRENT_YEAR`, spawn one Agent in parallel. Pass the prompt below verbatim, substituting: @@ -109,7 +109,7 @@ For each confirmed bug fix, collect: ## Output format -Write one file per bug fix to docs/issue-cases/partial/ using this name pattern: +Write one file per bug fix to internal-docs/issue-cases/partial/ using this name pattern: {{YEAR}}-NNN-kebab-short-name.md where NNN is a zero-padded counter starting at 001, scoped to this year only. @@ -144,10 +144,10 @@ year: {{YEAR}} ### Takeaway [The rule that prevents this class of bug. Be specific to this codebase.] -Also write a one-line summary file docs/issue-cases/partial/{{YEAR}}-index.md listing each case you wrote: +Also write a one-line summary file internal-docs/issue-cases/partial/{{YEAR}}-index.md listing each case you wrote: {{YEAR}}-NNN-kebab-name.md — [one-line summary] -If you find zero genuine bug fixes for {{YEAR}}, write docs/issue-cases/partial/{{YEAR}}-index.md with a single line: +If you find zero genuine bug fixes for {{YEAR}}, write internal-docs/issue-cases/partial/{{YEAR}}-index.md with a single line: no cases found ``` @@ -209,7 +209,7 @@ For each unique DELIVERY-XXXXX number found: - Record the ticket's `created` date from the Jira response (use as the **Date** field in the IC case) - Find the corresponding fix commit in git (`git log --all --oneline --grep="DELIVERY-XXXXX"`) - Inspect the diff (`git show <hash>`) - - Write the IC case to `docs/issue-cases/partial/JIRA-NNN-kebab-short-name.md` (where NNN is a zero-padded counter starting at 001, scoped to this step). Use the same file format as the year-agent cases (frontmatter with `commit:` and `year:` fields, then the IC sections). Step 1b.5 will collect and align all partial files together. + - Write the IC case to `internal-docs/issue-cases/partial/JIRA-NNN-kebab-short-name.md` (where NNN is a zero-padded counter starting at 001, scoped to this step). Use the same file format as the year-agent cases (frontmatter with `commit:` and `year:` fields, then the IC sections). Step 1b.5 will collect and align all partial files together. Skip tickets where the diff shows only infrastructure changes (Dockerfile, CI config, `.edn` config files with no behavior change). @@ -219,7 +219,7 @@ Skip tickets where the diff shows only infrastructure changes (Dockerfile, CI co Mark "Cross-check with Jira" as completed. Mark "Align IC cases" as `in_progress`. -**Collect** all files matching `docs/issue-cases/partial/????-???-*.md`. +**Collect** all files matching `internal-docs/issue-cases/partial/????-???-*.md`. **Deduplicate** by commit hash: read the `commit:` frontmatter field from each file. If two files share the same hash, keep the one with more lines (richer description) and discard the other. @@ -228,7 +228,7 @@ Mark "Cross-check with Jira" as completed. Mark "Align IC cases" as `in_progress **Renumber** sequentially starting at 1. Assign each file a new ID: `IC-001`, `IC-002`, ..., `IC-NNN`. **Rename** each file from its temp name to its final name: -- `docs/issue-cases/partial/2019-003-null-dereference.md` → `docs/issue-cases/IC-007-null-dereference.md` +- `internal-docs/issue-cases/partial/2019-003-null-dereference.md` → `internal-docs/issue-cases/IC-007-null-dereference.md` - Pattern: strip the `YYYY-NNN-` prefix, prepend `IC-NNN-` (using the new sequential number, zero-padded to 3 digits) **Update** the heading inside each renamed file from `## YYYY-NNN — Name` to `## IC-NNN — Name`. @@ -240,9 +240,9 @@ Report a summary table of all actions taken: | 2019-001-foo | IC-001-foo | abc1234 | 2019-03-12 | renamed | | 2020-002-bar | — | def5678 | 2020-07-01 | duplicate, discarded | -**Clean up** the staging directory after confirming all files have been moved to `docs/issue-cases/`: +**Clean up** the staging directory after confirming all files have been moved to `internal-docs/issue-cases/`: ```bash -rm -rf docs/issue-cases/partial/ +rm -rf internal-docs/issue-cases/partial/ ``` Mark "Align IC cases" as completed. @@ -326,7 +326,7 @@ Prepend a **Tech Design Checklist** section: - [ ] All initialization paths covered - [ ] Any rewrite of a previously-reverted feature must audit the original contract -Write to `docs/issue-cases/GUARDRAILS.md`. +Write to `internal-docs/issue-cases/GUARDRAILS.md`. --- @@ -399,7 +399,7 @@ Run immediately after INDEX.md is written. Three checks: **Check 1 — IC → Feature cross-reference** -If `docs/features/INDEX.md` exists: for each IC case, find the matching F-NNN feature by component name. Add a `feature_ref: [F-NNN]` line to the frontmatter of that IC file. If no match is found, leave the field blank and flag it. +If `internal-docs/features/INDEX.md` exists: for each IC case, find the matching F-NNN feature by component name. Add a `feature_ref: [F-NNN]` line to the frontmatter of that IC file. If no match is found, leave the field blank and flag it. **Check 2 — Orphaned IC cases** @@ -428,8 +428,8 @@ Add a "Before Making Code Changes" section using **active language**: ``` ## Before Making Code Changes -Before writing any code that touches a component listed in `docs/issue-cases/INDEX.md`: -1. Open `docs/issue-cases/INDEX.md` and find the component in the Hot Zones Map +Before writing any code that touches a component listed in `internal-docs/issue-cases/INDEX.md`: +1. Open `internal-docs/issue-cases/INDEX.md` and find the component in the Hot Zones Map 2. Read each linked IC case — pay attention to the **Takeaway** rule 3. Explicitly state which past issues are relevant and how the new code avoids repeating them @@ -467,7 +467,7 @@ MSG="" # Add one block per hot-zone component (replace HotZoneFile and ComponentName # with the actual filenames and component names from the Step 2 Hot Zones Map): if echo "$FILE_PATH" | grep -qE "HotZoneFile\.(clj|java)"; then - MSG="HOT ZONE — ComponentName: read docs/issue-cases/INDEX.md for relevant cases and apply their Takeaway rules before writing code." + MSG="HOT ZONE — ComponentName: read internal-docs/issue-cases/INDEX.md for relevant cases and apply their Takeaway rules before writing code." fi if [ -n "$MSG" ]; then diff --git a/.claude/skills/af-ship-orch/SKILL.md b/.claude/skills/af-ship-orch/SKILL.md index a3aad4f..89c8c6a 100644 --- a/.claude/skills/af-ship-orch/SKILL.md +++ b/.claude/skills/af-ship-orch/SKILL.md @@ -59,7 +59,7 @@ Immediately mark "Fetch and validate PRD" as `in_progress`. - Starts with `http` → Notion URL - Ends with `.md` or contains `/` → local file path -- Otherwise → stop and ask: "Please provide a Notion URL or a path to a local `.md` file (e.g. `https://notion.so/team/my-prd` or `docs/prds/my-feature.md`)." +- Otherwise → stop and ask: "Please provide a Notion URL or a path to a local `.md` file (e.g. `https://notion.so/team/my-prd` or `internal-docs/prds/my-feature.md`)." **Step 2 — Fetch or read** @@ -68,9 +68,9 @@ Immediately mark "Fetch and validate PRD" as `in_progress`. **Step 3 — Save a local copy** -Save to `docs/prds/<slug>.md`. +Save to `internal-docs/prds/<slug>.md`. - Derive `<slug>` from the document title (kebab-case, e.g. `dark-mode-settings`). -- If the file is already at `docs/prds/`, use it in place. +- If the file is already at `internal-docs/prds/`, use it in place. - If no title is detectable, ask: "What slug should I use for this PRD? (e.g. `dark-mode-settings`)" Mark "Fetch and validate PRD" as `completed`, "Challenge PRD" as `in_progress`. @@ -103,7 +103,7 @@ Immediately mark "Fetch and validate tech design" as `in_progress`. - Starts with `http` → Notion URL - Ends with `.md` or contains `/` → local file path -- Otherwise → stop and ask: "Please provide a Notion URL or a path to a local `.md` file (e.g. `https://notion.so/team/my-design` or `docs/tech-designs/my-feature.md`)." +- Otherwise → stop and ask: "Please provide a Notion URL or a path to a local `.md` file (e.g. `https://notion.so/team/my-design` or `internal-docs/tech-designs/my-feature.md`)." **Step 2 — Fetch or read** @@ -112,9 +112,9 @@ Immediately mark "Fetch and validate tech design" as `in_progress`. **Step 3 — Save a local copy** -Save to `docs/tech-designs/<slug>.md`. +Save to `internal-docs/tech-designs/<slug>.md`. - Derive `<slug>` from the document title (kebab-case). -- If the file is already at `docs/tech-designs/`, use it in place. +- If the file is already at `internal-docs/tech-designs/`, use it in place. - If no title is detectable, ask: "What slug should I use for this tech design? (e.g. `dark-mode-settings`)" Mark "Fetch and validate tech design" as `completed`, "Challenge tech design" as `in_progress`. @@ -143,13 +143,13 @@ BLOCKING REQUIREMENT: Call the `Skill` tool with `af-ship-orch` BEFORE any other ``` /af-ship <description> → af-ship-orch creates tasks → calls alice-pm - → Alice writes PRD → saves to docs/prds/<slug>.md → asks user to review + → Alice writes PRD → saves to internal-docs/prds/<slug>.md → asks user to review → User approves PRD → Alice invokes Bob and/or Erin if needed → Bob/Erin produce findings → Alice challenges (max 2 iterations) → Alice updates PRD if scope changed → Alice invokes Dave - → Dave writes tech design → saves to docs/tech-designs/<slug>.md + → Dave writes tech design → saves to internal-docs/tech-designs/<slug>.md → Alice challenges tech design (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." (on tech design) → Dave asks user to review tech design @@ -157,7 +157,7 @@ BLOCKING REQUIREMENT: Call the `Skill` tool with `af-ship-orch` BEFORE any other → Dave implements + writes unit tests → Alice challenges implementation (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." (on implementation) - → Dave writes F-NNN feature doc → saves to docs/features/ + → Dave writes F-NNN feature doc → saves to internal-docs/features/ → Alice challenges feature doc (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." (on feature doc) → If unresolved after 2 iterations → Alice escalates to user diff --git a/.claude/skills/alice-pm/SKILL.md b/.claude/skills/alice-pm/SKILL.md index ac002b3..331ef03 100644 --- a/.claude/skills/alice-pm/SKILL.md +++ b/.claude/skills/alice-pm/SKILL.md @@ -26,12 +26,12 @@ When starting a new feature delivery, write the PRD with these sections: | **Risks** | Release risk, compliance risk, accuracy risk. | | **Open questions** | What is unknown before Dave can start? | -Save the PRD to `docs/prds/<feature-slug>.md`, then write exactly: +Save the PRD to `internal-docs/prds/<feature-slug>.md`, then write exactly: --- ## ⏸ Waiting for your review -PRD saved to `docs/prds/<feature-slug>.md`. +PRD saved to `internal-docs/prds/<feature-slug>.md`. The workflow is paused. Reply **approved** to continue, or share your feedback and I'll update the PRD. --- @@ -80,7 +80,7 @@ Flag: missing sections, vague requirements ("improve performance"), unmeasurable If gaps found: 1. List every gap clearly. 2. Pause and ask the user to resolve them. -3. Update `docs/prds/<slug>.md` with resolved content. +3. Update `internal-docs/prds/<slug>.md` with resolved content. 4. Repeat until satisfied. Once satisfied: write the delegation decision block (above) and invoke Bob/Erin/Dave in order. Do NOT output a `⏸ Waiting for your review` pause — the PRD was externally authored and team-reviewed. @@ -189,7 +189,7 @@ Use `TaskList` to find tasks by subject, then `TaskUpdate` to advance them. Skip ### 1. GUARDRAILS Coverage - Did Dave's context table appear before the code? -- For every file touched: was the component checked against `docs/issue-cases/INDEX.md`? +- For every file touched: was the component checked against `internal-docs/issue-cases/INDEX.md`? - Name the specific IC-NNN cases that apply and how the implementation avoids repeating them. ### 2. Migration & Rollout Risk @@ -201,13 +201,13 @@ Use `TaskList` to find tasks by subject, then `TaskUpdate` to advance them. Skip ### 3. Feature Documentation **During tech design review:** -- Is the tech design saved to `docs/tech-designs/<slug>.md`? +- Is the tech design saved to `internal-docs/tech-designs/<slug>.md`? - Does the tech design cover all PRD requirements and acceptance criteria? - Is the planned F-NNN ID noted in the design? **During feature doc review (Phase 3 only — do not check during tech design or implementation review):** -- Is the F-NNN doc written to `docs/features/` and added to `docs/features/INDEX.md`? -- Does it follow `docs/features/TEMPLATE.md`? +- Is the F-NNN doc written to `internal-docs/features/` and added to `internal-docs/features/INDEX.md`? +- Does it follow `internal-docs/features/TEMPLATE.md`? - Are Business Purpose, Call Chain, Files, and Tests sections complete? ### 4. Concurrency & Thread Safety @@ -250,9 +250,9 @@ Use `TaskList` to find tasks by subject, then `TaskUpdate` to advance them. Skip - [ ] No open challenge items without a response ### Alice is satisfied with Dave's feature doc when: -- [ ] Impact scan table was printed — every changed file checked against `docs/features/INDEX.md` +- [ ] Impact scan table was printed — every changed file checked against `internal-docs/features/INDEX.md` - [ ] All affected existing F-NNN docs updated, or "none affected" explicitly stated -- [ ] F-NNN doc written to `docs/features/` and added to `docs/features/INDEX.md` +- [ ] F-NNN doc written to `internal-docs/features/` and added to `internal-docs/features/INDEX.md` - [ ] All template sections complete (Business Purpose, Call Chain, Files, Tests) - [ ] No open challenge items without a response @@ -315,8 +315,8 @@ Automated via GitHub Actions: `.github/workflows/rc-release.yml`, `rc-smoke.yml` ## Docs Locations -- PRDs → `docs/prds/<slug>.md` (temporary — user may push to Notion for review) -- Feature catalog docs → `docs/features/` (permanent) +- PRDs → `internal-docs/prds/<slug>.md` (temporary — user may push to Notion for review) +- Feature catalog docs → `internal-docs/features/` (permanent) --- diff --git a/.claude/skills/bob-flutter-researcher/SKILL.md b/.claude/skills/bob-flutter-researcher/SKILL.md index a489850..117f77c 100644 --- a/.claude/skills/bob-flutter-researcher/SKILL.md +++ b/.claude/skills/bob-flutter-researcher/SKILL.md @@ -17,21 +17,21 @@ Domain researcher for AppsFlyer Flutter Plugin. Knows how platform APIs and exte 1. Check if research already exists: ``` - ls docs/researches/ + ls internal-docs/researches/ ``` 2. Find related features: ``` - grep -i "<topic>" docs/features/INDEX.md + grep -i "<topic>" internal-docs/features/INDEX.md ``` 3. Find related issue cases: ``` - grep -i "<topic>" docs/issue-cases/INDEX.md + grep -i "<topic>" internal-docs/issue-cases/INDEX.md ``` 4. State what existing docs cover and what gap this research fills. ### Required output -Every research task produces `docs/researches/R-NNN-slug.md`. After writing: +Every research task produces `internal-docs/researches/R-NNN-slug.md`. After writing: - Flag which feature docs (F-NNN) should be updated based on findings — for Dave to action ### After completing research @@ -110,10 +110,10 @@ After Bob presents any research findings, `alice-pm` is invoked automatically. B ## Reference -- `docs/researches/TEMPLATE.md` — blank template -- `docs/features/INDEX.md` — feature catalog to cross-reference -- `docs/issue-cases/INDEX.md` — historical bugs to cross-reference -- `docs/issue-cases/GUARDRAILS.md` — engineering guardrails Bob's research should inform +- `internal-docs/researches/TEMPLATE.md` — blank template +- `internal-docs/features/INDEX.md` — feature catalog to cross-reference +- `internal-docs/issue-cases/INDEX.md` — historical bugs to cross-reference +- `internal-docs/issue-cases/GUARDRAILS.md` — engineering guardrails Bob's research should inform --- diff --git a/.claude/skills/dave-flutter-engineer/SKILL.md b/.claude/skills/dave-flutter-engineer/SKILL.md index e9e4af6..551e819 100644 --- a/.claude/skills/dave-flutter-engineer/SKILL.md +++ b/.claude/skills/dave-flutter-engineer/SKILL.md @@ -23,16 +23,16 @@ If neither exists, stop and call `Skill('alice-pm')` to produce one. ### Before writing any code or tech design -0. Load `docs/issue-cases/GUARDRAILS.md`. For tech designs, work through the Tech Design Checklist at the top. +0. Load `internal-docs/issue-cases/GUARDRAILS.md`. For tech designs, work through the Tech Design Checklist at the top. 1. Check if the target component is a hot zone: ``` - grep "ComponentName" docs/issue-cases/INDEX.md + grep "ComponentName" internal-docs/issue-cases/INDEX.md ``` -2. Load only the matching `docs/issue-cases/IC-NNN.md` files. +2. Load only the matching `internal-docs/issue-cases/IC-NNN.md` files. 3. State which cases apply and how the new code avoids repeating them. 4. Find and load relevant feature docs: ``` - grep "ComponentName" docs/features/INDEX.md + grep "ComponentName" internal-docs/features/INDEX.md ``` ### Before writing — required output @@ -52,9 +52,9 @@ If no issue cases apply, write "none — component not in hot zones." Never skip ### Phase 1 — Tech design -Write the tech design to `docs/tech-designs/<feature-slug>.md` where `<feature-slug>` is the same kebab-case slug used for the PRD (e.g. `device-farm-3d-header`). +Write the tech design to `internal-docs/tech-designs/<feature-slug>.md` where `<feature-slug>` is the same kebab-case slug used for the PRD (e.g. `device-farm-3d-header`). -Do NOT write tech designs in `docs/features/` — that directory is for finished feature catalog docs only. +Do NOT write tech designs in `internal-docs/features/` — that directory is for finished feature catalog docs only. Note the planned F-NNN ID in the design as "F-NNN — doc to be written after development is complete." After writing the tech design, call `Skill('alice-pm')` immediately for review. @@ -64,7 +64,7 @@ When Alice writes "Satisfied — Dave, this is ready." on the tech design, write --- ## ⏸ Waiting for your review -Tech design saved to `docs/tech-designs/<feature-slug>.md`. Alice has signed off. +Tech design saved to `internal-docs/tech-designs/<feature-slug>.md`. Alice has signed off. The workflow is paused. Reply **approved** to start implementation, or share your feedback. --- @@ -89,7 +89,7 @@ After Alice writes "Satisfied — Dave, this is ready." on the implementation: For every file changed during implementation, run: ``` -grep "<changed-file>" docs/features/INDEX.md +grep "<changed-file>" internal-docs/features/INDEX.md ``` Run once per changed file. Then print this table: @@ -101,7 +101,7 @@ For every affected F-NNN doc found: open it and update every section whose behav **Step 2 — Write the new feature doc** -Write the full F-NNN feature catalog doc to `docs/features/<F-NNN-slug>.md` and add it to `docs/features/INDEX.md`. +Write the full F-NNN feature catalog doc to `internal-docs/features/<F-NNN-slug>.md` and add it to `internal-docs/features/INDEX.md`. **Step 3 — Call Alice** @@ -154,11 +154,11 @@ BLOCKING REQUIREMENT: Include a `Skill('dave-flutter-engineer')` tool call in th ## Reference -- `docs/issue-cases/GUARDRAILS.md` — rules from real bugs; Tech Design Checklist -- `docs/issue-cases/INDEX.md` — hot zones, bug classes, component→case mapping -- `docs/issue-cases/IC-NNN.md` — individual cases (load only what you need) -- `docs/features/INDEX.md` — feature catalog index -- `docs/features/TEMPLATE.md` — required template for all feature docs +- `internal-docs/issue-cases/GUARDRAILS.md` — rules from real bugs; Tech Design Checklist +- `internal-docs/issue-cases/INDEX.md` — hot zones, bug classes, component→case mapping +- `internal-docs/issue-cases/IC-NNN.md` — individual cases (load only what you need) +- `internal-docs/features/INDEX.md` — feature catalog index +- `internal-docs/features/TEMPLATE.md` — required template for all feature docs --- diff --git a/.claude/skills/erin-flutter-analyst/SKILL.md b/.claude/skills/erin-flutter-analyst/SKILL.md index 35b4f5b..913dff8 100644 --- a/.claude/skills/erin-flutter-analyst/SKILL.md +++ b/.claude/skills/erin-flutter-analyst/SKILL.md @@ -86,8 +86,8 @@ After Erin presents any analysis findings, `alice-pm` is invoked automatically. - `docs/payloads/template.json` — canonical reference payload (sanitized) - `docs/payloads/FIELD_MAP.md` — complete field-to-feature-to-issue-case mapping - `docs/payloads/INDEX.md` — index of all payload analyses -- `docs/features/INDEX.md` — feature catalog -- `docs/issue-cases/INDEX.md` — bug history +- `internal-docs/features/INDEX.md` — feature catalog +- `internal-docs/issue-cases/INDEX.md` — bug history --- diff --git a/CLAUDE.md b/CLAUDE.md index 2586db2..b2002a3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -90,10 +90,10 @@ The following do not require a PRD or Alice review — invoke Dave directly: Every `/af-ship` deliverable must include: -- Alice PRD (`docs/prds/`) +- Alice PRD (`internal-docs/prds/`) - Bob findings (if invoked) - Erin payload impact (if invoked) -- Dave tech design (`docs/tech-designs/`) +- Dave tech design (`internal-docs/tech-designs/`) - Dave implementation + unit tests -- Dave feature doc (`docs/features/`) +- Dave feature doc (`internal-docs/features/`) - Alice sign-off at each phase diff --git a/ai-delivery-workflow-templat/README.md b/ai-delivery-workflow-templat/README.md index 02af1e6..1c11d6c 100644 --- a/ai-delivery-workflow-templat/README.md +++ b/ai-delivery-workflow-templat/README.md @@ -53,9 +53,9 @@ Determine: - The tech stack (languages, frameworks, build tools) - How to run the test suite - How releases are cut and published -- Where feature docs live (or suggest docs/features/) -- Where research docs live (or suggest docs/researches/) -- Where issue cases live (or suggest docs/issue-cases/) +- Where feature docs live (or suggest internal-docs/features/) +- Where research docs live (or suggest internal-docs/researches/) +- Where issue cases live (or suggest internal-docs/issue-cases/) - What counts as a maintenance task (no Alice review needed) Present your findings and wait for my confirmation before continuing. @@ -161,7 +161,7 @@ Wait for my instructions before making any further changes. Open `.claude/prompts/generate-feature-catalog.md`, copy its full contents, and paste into Claude Code. -This builds `docs/features/` — a catalog of every feature in the codebase with: +This builds `internal-docs/features/` — a catalog of every feature in the codebase with: - **Business Purpose** — what the product loses if the feature is removed (enriched from Notion if connected) - **Call Chain** — from public entry point to leaf implementation - **Dependency Diagrams** — runtime flow, initialization flow, and a full dependency table @@ -175,7 +175,7 @@ The prompt walks you through each phase with a live progress view and pauses for Open `.claude/prompts/generate-issue-cases.md`, copy its full contents, and paste into Claude Code. -This builds `docs/issue-cases/` — an engineering scar book mined from the full git history: +This builds `internal-docs/issue-cases/` — an engineering scar book mined from the full git history: - **IC-NNN-*.md** — one file per real bug: what happened, root cause, fix, and takeaway - **GUARDRAILS.md** — engineering rules derived from past incidents, with a tech design checklist - **Hot Zones Map** — which components carry the most historical risk diff --git a/ai-delivery-workflow-templat/update-existing-repo.md b/ai-delivery-workflow-templat/update-existing-repo.md index 29aa6cd..5b5872a 100644 --- a/ai-delivery-workflow-templat/update-existing-repo.md +++ b/ai-delivery-workflow-templat/update-existing-repo.md @@ -52,7 +52,7 @@ Find this entire block: Replace with: **Step 2 — Save PRD and ask user to review** - Save the PRD to `docs/prds/<feature-slug>.md` where `<feature-slug>` is a short kebab-case name (e.g. `device-farm-3d-header`). + Save the PRD to `internal-docs/prds/<feature-slug>.md` where `<feature-slug>` is a short kebab-case name (e.g. `device-farm-3d-header`). Then write: Then write exactly: @@ -60,7 +60,7 @@ Replace with: --- ## ⏸ Waiting for your review - PRD saved to `docs/prds/<feature-slug>.md`. + PRD saved to `internal-docs/prds/<feature-slug>.md`. The workflow is paused. Reply **approved** to continue, or share your feedback and I'll update the PRD. --- @@ -103,7 +103,7 @@ Find the entire code block inside Loop Mechanics (the ``` block) and replace it ``` User presents feature idea - → Alice writes PRD → saves to docs/prds/<slug>.md → asks user to review + → Alice writes PRD → saves to internal-docs/prds/<slug>.md → asks user to review → User approves PRD → Alice invokes Bob and/or Erin if needed → Bob/Erin produce findings @@ -111,7 +111,7 @@ Find the entire code block inside Loop Mechanics (the ``` block) and replace it → Bob/Erin address every open item → Alice updates PRD if scope changed → Alice invokes Dave - → Dave writes tech design → saves to docs/tech-designs/<slug>.md + → Dave writes tech design → saves to internal-docs/tech-designs/<slug>.md → Alice challenges tech design (Challenger Mode, max 2 iterations) → Dave addresses every open item → Alice: "Satisfied — Dave, this is ready." (on tech design) @@ -121,7 +121,7 @@ Find the entire code block inside Loop Mechanics (the ``` block) and replace it → Alice challenges implementation (Challenger Mode, max 2 iterations) → Dave addresses every open item → Alice: "Satisfied — Dave, this is ready." (on implementation) - → Dave writes F-NNN feature doc → saves to docs/features/ + → Dave writes F-NNN feature doc → saves to internal-docs/features/ → Alice challenges feature doc (Challenger Mode, max 2 iterations) → Alice: "Satisfied — Dave, this is ready." (on feature doc) → If unresolved after 2 iterations → Alice escalates to user @@ -139,13 +139,13 @@ Replace with: ### 3. Feature Documentation **During tech design review:** - - Is the tech design saved to `docs/tech-designs/<slug>.md`? + - Is the tech design saved to `internal-docs/tech-designs/<slug>.md`? - Does the tech design cover all PRD requirements and acceptance criteria? - Is the planned F-NNN ID noted in the design? **During feature doc review (Phase 3 only — do not check during tech design or implementation review):** - - Is the F-NNN doc written to `docs/features/` and added to `docs/features/INDEX.md`? - - Does it follow `docs/features/TEMPLATE.md`? + - Is the F-NNN doc written to `internal-docs/features/` and added to `internal-docs/features/INDEX.md`? + - Does it follow `internal-docs/features/TEMPLATE.md`? - Are Business Purpose, Call Chain, Files, and Tests sections complete? --- @@ -178,7 +178,7 @@ Replace with: - [ ] No open challenge items without a response ### Alice is satisfied with Dave's feature doc when: - - [ ] F-NNN doc written to `docs/features/` and added to `docs/features/INDEX.md` + - [ ] F-NNN doc written to `internal-docs/features/` and added to `internal-docs/features/INDEX.md` - [ ] All template sections complete (Business Purpose, Call Chain, Files, Tests) - [ ] No open challenge items without a response @@ -193,7 +193,7 @@ Find: Replace with: ## Docs Locations - - PRDs → `docs/prds/<slug>.md` (temporary — user may push to Notion for review) + - PRDs → `internal-docs/prds/<slug>.md` (temporary — user may push to Notion for review) - Feature catalog docs → `<keep the same path that was here>` (permanent) --- @@ -208,26 +208,26 @@ Find this entire block: > "Where should I write this tech design? > 1. **Notion** — tech design board - > 2. **Local file** — `docs/tech-designs/<ticket-or-feature-slug>.md`" + > 2. **Local file** — `internal-docs/tech-designs/<ticket-or-feature-slug>.md`" - Do NOT write tech designs in `docs/features/` — that directory is for finished feature catalog docs only. + Do NOT write tech designs in `internal-docs/features/` — that directory is for finished feature catalog docs only. Note the planned F-NNN ID in the design as "F-NNN — doc to be written after development is complete." ### After completing a code change 5. Find which feature docs reference each changed file: ``` - grep "ChangedFile" docs/features/INDEX.md + grep "ChangedFile" internal-docs/features/INDEX.md ``` 6. Update any section whose behavior, public API, configuration, or data flow changed. - 7. If the change introduces a new feature: write the full F-NNN doc and add it to `docs/features/INDEX.md` **only after Alice has written "Satisfied — Dave, this is ready."** Not before. + 7. If the change introduces a new feature: write the full F-NNN doc and add it to `internal-docs/features/INDEX.md` **only after Alice has written "Satisfied — Dave, this is ready."** Not before. Replace with: ### Phase 1 — Tech design - Write the tech design to `docs/tech-designs/<feature-slug>.md` where `<feature-slug>` is the same kebab-case slug used for the PRD (e.g. `device-farm-3d-header`). + Write the tech design to `internal-docs/tech-designs/<feature-slug>.md` where `<feature-slug>` is the same kebab-case slug used for the PRD (e.g. `device-farm-3d-header`). - Do NOT write tech designs in `docs/features/` — that directory is for finished feature catalog docs only. + Do NOT write tech designs in `internal-docs/features/` — that directory is for finished feature catalog docs only. Note the planned F-NNN ID in the design as "F-NNN — doc to be written after development is complete." After writing the tech design, call `Skill('<alice-skill-name>')` immediately for review. @@ -238,7 +238,7 @@ Replace with: --- ## ⏸ Waiting for your review - Tech design saved to `docs/tech-designs/<feature-slug>.md`. Alice has signed off. + Tech design saved to `internal-docs/tech-designs/<feature-slug>.md`. Alice has signed off. The workflow is paused. Reply **approved** to start implementation, or share your feedback. --- @@ -263,7 +263,7 @@ Replace with: For every file changed during implementation, run: ``` - grep "<changed-file>" docs/features/INDEX.md + grep "<changed-file>" internal-docs/features/INDEX.md ``` Run once per changed file. Then print this table: @@ -275,7 +275,7 @@ Replace with: **Step 2 — Write the new feature doc** - Write the full F-NNN feature catalog doc to `docs/features/<F-NNN-slug>.md` and add it to `docs/features/INDEX.md`. + Write the full F-NNN feature catalog doc to `internal-docs/features/<F-NNN-slug>.md` and add it to `internal-docs/features/INDEX.md`. **Step 3 — Call Alice** @@ -350,15 +350,15 @@ Replace with: ### Change 2 — Docs Layer table (full replacement) Find: | `<feature doc path>` | Feature catalog | Dave (writes F-NNN) | Alice, Bob, Erin (read) | - | `docs/issue-cases/` | Scar book | Human / eng team | Alice, Dave, Bob, Erin (read) | + | `internal-docs/issue-cases/` | Scar book | Human / eng team | Alice, Dave, Bob, Erin (read) | | `<research path>` | Research log | Bob (writes R-NNN) | Alice (via challenge loop) | | `docs/payloads/` | Payload map | Erin (writes P-NNN, FIELD_MAP) | Alice, Dave (via challenge loop) | Replace with: - | `docs/prds/` | PRDs (staging) | Alice (writes) | User review; may move to Notion | - | `docs/tech-designs/` | Tech designs (staging) | Dave (writes) | User review; may move to Notion | + | `internal-docs/prds/` | PRDs (staging) | Alice (writes) | User review; may move to Notion | + | `internal-docs/tech-designs/` | Tech designs (staging) | Dave (writes) | User review; may move to Notion | | `<keep the same feature doc path>` | Feature catalog | Dave (writes F-NNN) | Alice, Bob, Erin (read) | - | `docs/issue-cases/` | Scar book | Human / eng team | Alice, Dave, Bob, Erin (read) | + | `internal-docs/issue-cases/` | Scar book | Human / eng team | Alice, Dave, Bob, Erin (read) | | `<keep the same research path>` | Research log | Bob (writes R-NNN) | Alice (via challenge loop) | | `docs/payloads/` | Payload map | Erin (writes P-NNN, FIELD_MAP) | Alice, Dave (via challenge loop) | @@ -387,7 +387,7 @@ Find the entire code block inside Loop Mechanics (the ``` block) and replace wit ``` User runs /af-ship <description> - → Alice writes PRD → saves to docs/prds/<slug>.md → asks user to review + → Alice writes PRD → saves to internal-docs/prds/<slug>.md → asks user to review → User approves PRD → Alice invokes Bob and/or Erin if needed → Bob/Erin produce findings @@ -396,7 +396,7 @@ Find the entire code block inside Loop Mechanics (the ``` block) and replace wit → Alice invokes Dave Phase 1 — Tech design - → Dave writes tech design → saves to docs/tech-designs/<slug>.md + → Dave writes tech design → saves to internal-docs/tech-designs/<slug>.md → Alice challenges tech design (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." (on tech design) → Dave asks user to review tech design @@ -408,7 +408,7 @@ Find the entire code block inside Loop Mechanics (the ``` block) and replace wit → Alice: "Satisfied — Dave, this is ready." (on implementation) Phase 3 — Feature doc - → Dave writes F-NNN feature doc → saves to docs/features/ + → Dave writes F-NNN feature doc → saves to internal-docs/features/ → Alice challenges feature doc (max 2 iterations) → Alice: "Satisfied — Dave, this is ready." (on feature doc) ``` @@ -424,7 +424,7 @@ Create this file at `.claude/commands/af-ship.md` with the following content exa $ARGUMENTS Invoke the `alice-feature-orchestrator` skill now to begin. Alice will write a PRD, - save it to docs/prds/, ask for your review, then coordinate research and engineering + save it to internal-docs/prds/, ask for your review, then coordinate research and engineering through tech design, implementation, and feature documentation. --- @@ -470,12 +470,12 @@ Replace the full contents of CLAUDE.md with: Every `/af-ship` deliverable must include: - - Alice PRD (`docs/prds/`) + - Alice PRD (`internal-docs/prds/`) - Bob findings (if invoked) - Erin payload impact (if invoked) - - Dave tech design (`docs/tech-designs/`) + - Dave tech design (`internal-docs/tech-designs/`) - Dave implementation + unit tests - - Dave feature doc (`docs/features/`) + - Dave feature doc (`internal-docs/features/`) - Alice sign-off at each phase Note: preserve the existing maintenance tasks list and skill names (domain-specific). @@ -518,15 +518,15 @@ Replace with: ### Change 6 — Alice satisfaction criteria for feature doc Find: ### Alice is satisfied with Dave's feature doc when: - - [ ] F-NNN doc written to `docs/features/` and added to `docs/features/INDEX.md` + - [ ] F-NNN doc written to `internal-docs/features/` and added to `internal-docs/features/INDEX.md` - [ ] All template sections complete (Business Purpose, Call Chain, Files, Tests) - [ ] No open challenge items without a response Replace with: ### Alice is satisfied with Dave's feature doc when: - - [ ] Impact scan table was printed — every changed file checked against `docs/features/INDEX.md` + - [ ] Impact scan table was printed — every changed file checked against `internal-docs/features/INDEX.md` - [ ] All affected existing F-NNN docs updated, or "none affected" explicitly stated - - [ ] F-NNN doc written to `docs/features/` and added to `docs/features/INDEX.md` + - [ ] F-NNN doc written to `internal-docs/features/` and added to `internal-docs/features/INDEX.md` - [ ] All template sections complete (Business Purpose, Call Chain, Files, Tests) - [ ] No open challenge items without a response diff --git a/docs/features/DIAGRAM.md b/internal-docs/features/DIAGRAM.md similarity index 100% rename from docs/features/DIAGRAM.md rename to internal-docs/features/DIAGRAM.md diff --git a/docs/features/F-001-sdk-initialization.md b/internal-docs/features/F-001-sdk-initialization.md similarity index 100% rename from docs/features/F-001-sdk-initialization.md rename to internal-docs/features/F-001-sdk-initialization.md diff --git a/docs/features/F-002-sdk-start.md b/internal-docs/features/F-002-sdk-start.md similarity index 100% rename from docs/features/F-002-sdk-start.md rename to internal-docs/features/F-002-sdk-start.md diff --git a/docs/features/F-003-sdk-plugin-version-retrieval.md b/internal-docs/features/F-003-sdk-plugin-version-retrieval.md similarity index 100% rename from docs/features/F-003-sdk-plugin-version-retrieval.md rename to internal-docs/features/F-003-sdk-plugin-version-retrieval.md diff --git a/docs/features/F-004-in-app-event-logging.md b/internal-docs/features/F-004-in-app-event-logging.md similarity index 100% rename from docs/features/F-004-in-app-event-logging.md rename to internal-docs/features/F-004-in-app-event-logging.md diff --git a/docs/features/F-005-ad-revenue-logging.md b/internal-docs/features/F-005-ad-revenue-logging.md similarity index 100% rename from docs/features/F-005-ad-revenue-logging.md rename to internal-docs/features/F-005-ad-revenue-logging.md diff --git a/docs/features/F-006-custom-host-configuration.md b/internal-docs/features/F-006-custom-host-configuration.md similarity index 100% rename from docs/features/F-006-custom-host-configuration.md rename to internal-docs/features/F-006-custom-host-configuration.md diff --git a/docs/features/F-007-device-id-collection-optout.md b/internal-docs/features/F-007-device-id-collection-optout.md similarity index 100% rename from docs/features/F-007-device-id-collection-optout.md rename to internal-docs/features/F-007-device-id-collection-optout.md diff --git a/docs/features/F-008-manual-imei-android-id-override.md b/internal-docs/features/F-008-manual-imei-android-id-override.md similarity index 100% rename from docs/features/F-008-manual-imei-android-id-override.md rename to internal-docs/features/F-008-manual-imei-android-id-override.md diff --git a/docs/features/F-009-min-time-between-sessions.md b/internal-docs/features/F-009-min-time-between-sessions.md similarity index 100% rename from docs/features/F-009-min-time-between-sessions.md rename to internal-docs/features/F-009-min-time-between-sessions.md diff --git a/docs/features/F-010-currency-code-setting.md b/internal-docs/features/F-010-currency-code-setting.md similarity index 100% rename from docs/features/F-010-currency-code-setting.md rename to internal-docs/features/F-010-currency-code-setting.md diff --git a/docs/features/F-011-tcf-dma-automatic-consent-collection.md b/internal-docs/features/F-011-tcf-dma-automatic-consent-collection.md similarity index 100% rename from docs/features/F-011-tcf-dma-automatic-consent-collection.md rename to internal-docs/features/F-011-tcf-dma-automatic-consent-collection.md diff --git a/docs/features/F-012-manual-gdpr-dma-consent-api.md b/internal-docs/features/F-012-manual-gdpr-dma-consent-api.md similarity index 100% rename from docs/features/F-012-manual-gdpr-dma-consent-api.md rename to internal-docs/features/F-012-manual-gdpr-dma-consent-api.md diff --git a/docs/features/F-013-user-anonymization.md b/internal-docs/features/F-013-user-anonymization.md similarity index 100% rename from docs/features/F-013-user-anonymization.md rename to internal-docs/features/F-013-user-anonymization.md diff --git a/docs/features/F-014-manual-deep-link-retrigger.md b/internal-docs/features/F-014-manual-deep-link-retrigger.md similarity index 100% rename from docs/features/F-014-manual-deep-link-retrigger.md rename to internal-docs/features/F-014-manual-deep-link-retrigger.md diff --git a/docs/features/F-015-customer-user-id.md b/internal-docs/features/F-015-customer-user-id.md similarity index 100% rename from docs/features/F-015-customer-user-id.md rename to internal-docs/features/F-015-customer-user-id.md diff --git a/docs/features/F-016-update-vs-fresh-install-flag.md b/internal-docs/features/F-016-update-vs-fresh-install-flag.md similarity index 100% rename from docs/features/F-016-update-vs-fresh-install-flag.md rename to internal-docs/features/F-016-update-vs-fresh-install-flag.md diff --git a/docs/features/F-017-sdk-kill-switch.md b/internal-docs/features/F-017-sdk-kill-switch.md similarity index 100% rename from docs/features/F-017-sdk-kill-switch.md rename to internal-docs/features/F-017-sdk-kill-switch.md diff --git a/docs/features/F-018-uninstall-measurement.md b/internal-docs/features/F-018-uninstall-measurement.md similarity index 100% rename from docs/features/F-018-uninstall-measurement.md rename to internal-docs/features/F-018-uninstall-measurement.md diff --git a/docs/features/F-019-user-email-collection.md b/internal-docs/features/F-019-user-email-collection.md similarity index 100% rename from docs/features/F-019-user-email-collection.md rename to internal-docs/features/F-019-user-email-collection.md diff --git a/docs/features/F-020-appsflyer-uid-retrieval.md b/internal-docs/features/F-020-appsflyer-uid-retrieval.md similarity index 100% rename from docs/features/F-020-appsflyer-uid-retrieval.md rename to internal-docs/features/F-020-appsflyer-uid-retrieval.md diff --git a/docs/features/F-021-delayed-session-start-pending-cuid.md b/internal-docs/features/F-021-delayed-session-start-pending-cuid.md similarity index 100% rename from docs/features/F-021-delayed-session-start-pending-cuid.md rename to internal-docs/features/F-021-delayed-session-start-pending-cuid.md diff --git a/docs/features/F-022-push-notification-deep-link-path-config.md b/internal-docs/features/F-022-push-notification-deep-link-path-config.md similarity index 100% rename from docs/features/F-022-push-notification-deep-link-path-config.md rename to internal-docs/features/F-022-push-notification-deep-link-path-config.md diff --git a/docs/features/F-023-in-app-purchase-validation-v1.md b/internal-docs/features/F-023-in-app-purchase-validation-v1.md similarity index 100% rename from docs/features/F-023-in-app-purchase-validation-v1.md rename to internal-docs/features/F-023-in-app-purchase-validation-v1.md diff --git a/docs/features/F-024-in-app-purchase-validation-v2.md b/internal-docs/features/F-024-in-app-purchase-validation-v2.md similarity index 100% rename from docs/features/F-024-in-app-purchase-validation-v2.md rename to internal-docs/features/F-024-in-app-purchase-validation-v2.md diff --git a/docs/features/F-025-ios-receipt-validation-sandbox-toggle.md b/internal-docs/features/F-025-ios-receipt-validation-sandbox-toggle.md similarity index 100% rename from docs/features/F-025-ios-receipt-validation-sandbox-toggle.md rename to internal-docs/features/F-025-ios-receipt-validation-sandbox-toggle.md diff --git a/docs/features/F-026-additional-custom-data.md b/internal-docs/features/F-026-additional-custom-data.md similarity index 100% rename from docs/features/F-026-additional-custom-data.md rename to internal-docs/features/F-026-additional-custom-data.md diff --git a/docs/features/F-027-user-invite-link-generation-onelink.md b/internal-docs/features/F-027-user-invite-link-generation-onelink.md similarity index 100% rename from docs/features/F-027-user-invite-link-generation-onelink.md rename to internal-docs/features/F-027-user-invite-link-generation-onelink.md diff --git a/docs/features/F-028-app-invite-onelink-id-configuration.md b/internal-docs/features/F-028-app-invite-onelink-id-configuration.md similarity index 100% rename from docs/features/F-028-app-invite-onelink-id-configuration.md rename to internal-docs/features/F-028-app-invite-onelink-id-configuration.md diff --git a/docs/features/F-029-cross-promotion-impression-click-tracking.md b/internal-docs/features/F-029-cross-promotion-impression-click-tracking.md similarity index 100% rename from docs/features/F-029-cross-promotion-impression-click-tracking.md rename to internal-docs/features/F-029-cross-promotion-impression-click-tracking.md diff --git a/docs/features/F-030-custom-branded-onelink-domains.md b/internal-docs/features/F-030-custom-branded-onelink-domains.md similarity index 100% rename from docs/features/F-030-custom-branded-onelink-domains.md rename to internal-docs/features/F-030-custom-branded-onelink-domains.md diff --git a/docs/features/F-031-push-notification-data-handling.md b/internal-docs/features/F-031-push-notification-data-handling.md similarity index 100% rename from docs/features/F-031-push-notification-data-handling.md rename to internal-docs/features/F-031-push-notification-data-handling.md diff --git a/docs/features/F-032-facebook-deferred-app-links.md b/internal-docs/features/F-032-facebook-deferred-app-links.md similarity index 100% rename from docs/features/F-032-facebook-deferred-app-links.md rename to internal-docs/features/F-032-facebook-deferred-app-links.md diff --git a/docs/features/F-033-skadnetwork-opt-out.md b/internal-docs/features/F-033-skadnetwork-opt-out.md similarity index 100% rename from docs/features/F-033-skadnetwork-opt-out.md rename to internal-docs/features/F-033-skadnetwork-opt-out.md diff --git a/docs/features/F-034-advertising-identifier-collection-disable.md b/internal-docs/features/F-034-advertising-identifier-collection-disable.md similarity index 100% rename from docs/features/F-034-advertising-identifier-collection-disable.md rename to internal-docs/features/F-034-advertising-identifier-collection-disable.md diff --git a/docs/features/F-035-conversion-data-callback.md b/internal-docs/features/F-035-conversion-data-callback.md similarity index 100% rename from docs/features/F-035-conversion-data-callback.md rename to internal-docs/features/F-035-conversion-data-callback.md diff --git a/docs/features/F-036-app-open-attribution-callback.md b/internal-docs/features/F-036-app-open-attribution-callback.md similarity index 100% rename from docs/features/F-036-app-open-attribution-callback.md rename to internal-docs/features/F-036-app-open-attribution-callback.md diff --git a/docs/features/F-037-unified-deep-linking-callback-and-models.md b/internal-docs/features/F-037-unified-deep-linking-callback-and-models.md similarity index 100% rename from docs/features/F-037-unified-deep-linking-callback-and-models.md rename to internal-docs/features/F-037-unified-deep-linking-callback-and-models.md diff --git a/docs/features/F-038-legacy-purchase-validation-notification-callback.md b/internal-docs/features/F-038-legacy-purchase-validation-notification-callback.md similarity index 100% rename from docs/features/F-038-legacy-purchase-validation-notification-callback.md rename to internal-docs/features/F-038-legacy-purchase-validation-notification-callback.md diff --git a/docs/features/F-039-native-ios-deep-link-entry-points.md b/internal-docs/features/F-039-native-ios-deep-link-entry-points.md similarity index 100% rename from docs/features/F-039-native-ios-deep-link-entry-points.md rename to internal-docs/features/F-039-native-ios-deep-link-entry-points.md diff --git a/docs/features/F-040-android-new-intent-deep-link-forwarding.md b/internal-docs/features/F-040-android-new-intent-deep-link-forwarding.md similarity index 100% rename from docs/features/F-040-android-new-intent-deep-link-forwarding.md rename to internal-docs/features/F-040-android-new-intent-deep-link-forwarding.md diff --git a/docs/features/F-041-current-device-language-override.md b/internal-docs/features/F-041-current-device-language-override.md similarity index 100% rename from docs/features/F-041-current-device-language-override.md rename to internal-docs/features/F-041-current-device-language-override.md diff --git a/docs/features/F-042-partner-postback-sharing-filter.md b/internal-docs/features/F-042-partner-postback-sharing-filter.md similarity index 100% rename from docs/features/F-042-partner-postback-sharing-filter.md rename to internal-docs/features/F-042-partner-postback-sharing-filter.md diff --git a/docs/features/F-043-out-of-store-install-source.md b/internal-docs/features/F-043-out-of-store-install-source.md similarity index 100% rename from docs/features/F-043-out-of-store-install-source.md rename to internal-docs/features/F-043-out-of-store-install-source.md diff --git a/docs/features/F-044-partner-specific-data.md b/internal-docs/features/F-044-partner-specific-data.md similarity index 100% rename from docs/features/F-044-partner-specific-data.md rename to internal-docs/features/F-044-partner-specific-data.md diff --git a/docs/features/F-045-deep-link-url-resolution-allow-list.md b/internal-docs/features/F-045-deep-link-url-resolution-allow-list.md similarity index 100% rename from docs/features/F-045-deep-link-url-resolution-allow-list.md rename to internal-docs/features/F-045-deep-link-url-resolution-allow-list.md diff --git a/docs/features/F-046-disable-network-data.md b/internal-docs/features/F-046-disable-network-data.md similarity index 100% rename from docs/features/F-046-disable-network-data.md rename to internal-docs/features/F-046-disable-network-data.md diff --git a/docs/features/F-047-appset-id-collection-optout.md b/internal-docs/features/F-047-appset-id-collection-optout.md similarity index 100% rename from docs/features/F-047-appset-id-collection-optout.md rename to internal-docs/features/F-047-appset-id-collection-optout.md diff --git a/docs/features/F-048-plugin-metadata-reporting.md b/internal-docs/features/F-048-plugin-metadata-reporting.md similarity index 100% rename from docs/features/F-048-plugin-metadata-reporting.md rename to internal-docs/features/F-048-plugin-metadata-reporting.md diff --git a/docs/features/F-049-purchase-connector-configuration-lifecycle.md b/internal-docs/features/F-049-purchase-connector-configuration-lifecycle.md similarity index 100% rename from docs/features/F-049-purchase-connector-configuration-lifecycle.md rename to internal-docs/features/F-049-purchase-connector-configuration-lifecycle.md diff --git a/docs/features/F-050-purchase-connector-storekit-version-selection.md b/internal-docs/features/F-050-purchase-connector-storekit-version-selection.md similarity index 100% rename from docs/features/F-050-purchase-connector-storekit-version-selection.md rename to internal-docs/features/F-050-purchase-connector-storekit-version-selection.md diff --git a/docs/features/F-051-purchase-connector-android-validation-result-listeners.md b/internal-docs/features/F-051-purchase-connector-android-validation-result-listeners.md similarity index 100% rename from docs/features/F-051-purchase-connector-android-validation-result-listeners.md rename to internal-docs/features/F-051-purchase-connector-android-validation-result-listeners.md diff --git a/docs/features/F-052-purchase-connector-ios-combined-validation-callback.md b/internal-docs/features/F-052-purchase-connector-ios-combined-validation-callback.md similarity index 100% rename from docs/features/F-052-purchase-connector-ios-combined-validation-callback.md rename to internal-docs/features/F-052-purchase-connector-ios-combined-validation-callback.md diff --git a/docs/features/F-053-purchase-connector-google-play-data-models.md b/internal-docs/features/F-053-purchase-connector-google-play-data-models.md similarity index 100% rename from docs/features/F-053-purchase-connector-google-play-data-models.md rename to internal-docs/features/F-053-purchase-connector-google-play-data-models.md diff --git a/docs/features/F-054-purchase-connector-build-time-opt-in.md b/internal-docs/features/F-054-purchase-connector-build-time-opt-in.md similarity index 100% rename from docs/features/F-054-purchase-connector-build-time-opt-in.md rename to internal-docs/features/F-054-purchase-connector-build-time-opt-in.md diff --git a/docs/features/F-055-purchase-connector-missing-configuration-guard.md b/internal-docs/features/F-055-purchase-connector-missing-configuration-guard.md similarity index 100% rename from docs/features/F-055-purchase-connector-missing-configuration-guard.md rename to internal-docs/features/F-055-purchase-connector-missing-configuration-guard.md diff --git a/docs/features/F-056-app-invite-link-onelink-id-init-time.md b/internal-docs/features/F-056-app-invite-link-onelink-id-init-time.md similarity index 100% rename from docs/features/F-056-app-invite-link-onelink-id-init-time.md rename to internal-docs/features/F-056-app-invite-link-onelink-id-init-time.md diff --git a/docs/features/F-057-asa-collection-optout.md b/internal-docs/features/F-057-asa-collection-optout.md similarity index 100% rename from docs/features/F-057-asa-collection-optout.md rename to internal-docs/features/F-057-asa-collection-optout.md diff --git a/docs/features/F-058-att-authorization-wait-timeout.md b/internal-docs/features/F-058-att-authorization-wait-timeout.md similarity index 100% rename from docs/features/F-058-att-authorization-wait-timeout.md rename to internal-docs/features/F-058-att-authorization-wait-timeout.md diff --git a/docs/features/F-059-debug-logging-toggle.md b/internal-docs/features/F-059-debug-logging-toggle.md similarity index 100% rename from docs/features/F-059-debug-logging-toggle.md rename to internal-docs/features/F-059-debug-logging-toggle.md diff --git a/docs/features/INDEX.md b/internal-docs/features/INDEX.md similarity index 100% rename from docs/features/INDEX.md rename to internal-docs/features/INDEX.md diff --git a/docs/features/TEMPLATE.md b/internal-docs/features/TEMPLATE.md similarity index 100% rename from docs/features/TEMPLATE.md rename to internal-docs/features/TEMPLATE.md