molecule-dev-department/dev-lead/app-lead/documentation-specialist/workspace.yaml
claude-ceo-assistant 1dd614a4f1 atomize(dev-tree): nest sub-teams + leaf workspaces under dev-lead/, dissolve teams/
Phase 3c-3 of internal#77 (dev-department extraction).

Atomization completes the structural goal of the RFC (Hongming Q3+Q5):
each workspace is a self-contained folder; no cross-tree '..' refs;
the validator can enforce orphans-impossible-by-construction in --strict mode.

What changed:

  Folder moves (history preserved via git mv):
  - core-be, core-fe, core-qa, core-security, core-uiux, core-devops,
    core-offsec → core-lead/<self>/
  - cp-be, cp-qa, cp-security → cp-lead/<self>/
  - app-fe, app-qa, technical-writer, documentation-specialist
    → app-lead/<self>/
  - infra-sre, infra-runtime-be → infra-lead/<self>/
  - sdk-dev, plugin-dev → sdk-lead/<self>/
  - core-lead, cp-lead, app-lead, infra-lead, sdk-lead,
    release-manager, integration-tester, fullstack-engineer,
    triage-operator → dev-lead/<self>/

  Workspace.yaml content:
  - dev-lead/workspace.yaml: lifted from teams/dev.yaml. children: paths
    rewritten from team-yaml-style ('!include core-platform.yaml') and
    floater-style ('!include ../release-manager/workspace.yaml') to
    canonical './<child>/workspace.yaml'.
  - dev-lead/<sub-team>-lead/workspace.yaml: lifted from teams/<sub-team>.yaml.
    children: paths rewritten from '../<child>/workspace.yaml' to
    './<child>/workspace.yaml'.
  - dev-lead/app-lead/documentation-specialist/workspace.yaml: lifted from
    teams/documentation-specialist.yaml (Q1 placement).
  - dev-lead/triage-operator/workspace.yaml: lifted from
    teams/triage-operator.yaml (Q2 placement).
  - All files_dir: paths updated to full path-from-org-root
    (e.g. 'core-be' → 'dev-lead/core-lead/core-be',
     'core-lead' → 'dev-lead/core-lead', etc.). When parent template
    imports via the 'dev-lead' symlink (Phase 3d), files_dir resolves
    correctly relative to parent's org-root.

  Manifest:
  - dev-department.yaml roots: changed from '!include teams/dev.yaml'
    to '!include ./dev-lead/workspace.yaml'.

  Composition layer:
  - teams/ entirely deleted (8 yaml files removed). The composition is
    now expressed structurally via the folder tree.

  CI gate:
  - .github/workflows/validate.yml runs validate-tree.py --strict.
    Cross-tree '..' refs now hard-fail.

Validator state on this commit (--strict):
  filesystem workspace folders : 28
  reachable from manifest      : 28
  orphans                      : 0
  cross-tree '..' refs         : 0
  duplicate-parent claims      : 0
  generic errors               : 0
  OK — tree is clean (strict)

Refs:
  internal#77 — extraction RFC
  Hongming Q3+Q5 (atomization) + Q1+Q2 (doc-spec + triage-op placement)
  + 'dont wait for me, follow the plan' 2026-05-08
  SOP Phase 3c-3 — task #229
2026-05-08 04:08:22 -07:00

81 lines
4.6 KiB
YAML

name: Documentation Specialist
role: >-
Owns end-to-end documentation across the entire Molecule AI GitHub org
(40+ repos as of 2026-04-16): molecule-core (renamed from molecule-monorepo),
the docs site (Molecule-AI/docs → doc.moleculesai.app, Fumadocs + Next.js 15),
every workspace template repo (claude-code, hermes, langgraph, deepagents,
crewai, autogen, openclaw, gemini-cli), every plugin repo (~21 of them
including ecc, superpowers, molecule-dev, molecule-careful-bash, and the
rest), every org template (free-beats-all, medo-smoke, molecule-dev,
molecule-worker-gemini, reno-stars), the SDKs (molecule-sdk-python,
molecule-cli, molecule-mcp-server, molecule-ai-workspace-runtime), the
shared CI repo (molecule-ci), the status page (molecule-ai-status), AND
the SaaS controlplane (PRIVATE, Molecule-AI/molecule-controlplane).
Strict privacy rule: controlplane implementation details NEVER leak into
public surfaces — public docs describe the SaaS PRODUCT (signup, billing,
tenant lifecycle, multi-tenant isolation guarantees), never the
provisioner's internals.
Does NOT own the landingpage repo — that's Content Marketer's surface
(marketing copy + SEO + conversion). Doc Specialist coordinates with
Marketing Lead via delegate_task when a docs change has promotional
implications (new feature launch announcements, etc.) but updates that
match repository state + changelogs are owned by Doc Specialist alone
and don't require marketing approval.
Owns the daily public CHANGELOG — generates an end-of-day summary of
every merged PR + version bump + breaking change across the org and
publishes to docs site (CHANGELOG.md) so customers can see what changed
each day. The changelog is the source of truth for "what shipped today";
marketing extracts highlights from it for blog posts / social posts.
Definition of done: every public surface has accurate, current,
example-rich documentation; every merged PR that touches a public
surface has a paired docs PR within one cron tick (now every 2 hours,
not daily); every stub page on the docs site eventually gets
backfilled; daily changelog published EOD; controlplane internal docs
stay current; nothing private leaks to public.
tier: 3
model: opus
files_dir: dev-lead/app-lead/documentation-specialist
canvas: {x: 900, y: 250}
# Documentation Specialist needs browser-automation to crawl the live
# docs site (visual regressions, broken links, dead anchors) plus
# update-docs skill (already in defaults) for cross-repo docs sync.
plugins: [browser-automation]
# Phase 1 scalability: prompts externalized to sibling .md files.
# See documentation-specialist/{initial-prompt.md, schedules/*.md}.
# The platform's org importer reads these at POST /org/import time
# and inlines them into the workspace's /configs/config.yaml and
# workspace_schedules rows. Inline `initial_prompt:` / `prompt:`
# still win if both are set (backwards-compat).
initial_prompt_file: initial-prompt.md
schedules:
# Cross-repo docs watch — every 2 hours per CEO directive 2026-04-16
# ("doc specialist should run each 2 hours ... updating documents to match
# our repository and change logs shouldn't need marketing"). Walks every
# Molecule-AI/* repo's recent merged PRs since the last tick, opens paired
# docs PRs against either monorepo (architecture docs) or docs site
# (customer-facing). Stagger at minute :13 to avoid colliding with the
# PM/Dev Lead orchestrator pulses on minutes ending in :01/:06/:11/etc.
- name: Cross-repo docs watch (every 2h)
cron_expr: "13 */2 * * *"
prompt_file: schedules/cross-repo-docs-watch-every-2h.md
enabled: true
# Daily changelog — fires at 23:50 UTC end-of-day, aggregates every merged
# PR across the org for the calendar day and publishes to docs site
# CHANGELOG.md. Customer-facing source of truth for "what shipped today".
# Marketing then extracts highlights for blog posts / socials (Doc
# Specialist owns the changelog itself; marketing owns the promotional
# spin on top of it).
- name: Daily changelog (EOD)
cron_expr: "50 23 * * *"
prompt_file: schedules/daily-changelog.md
enabled: true
# Weekly terminology + freshness audit — kept from previous config.
# Lower-cadence pass to enforce one-canonical-name-per-concept across
# the whole org and flag stale "Coming soon" stubs that the every-2h
# watch hasn't reached yet.
- name: Weekly terminology + freshness audit
cron_expr: "0 11 * * 1"
prompt_file: schedules/weekly-terminology-audit.md
enabled: true