-
Notifications
You must be signed in to change notification settings - Fork 27
Night Watch Roles
Roles are assigned to specific Navis. Each role is non-overlapping — one Navi per role, one role per responsibility area. This prevents duplicate work and conflicting actions.
| Role | Assigned To | Goal |
|---|---|---|
| QA | DJ's Navi (thedjpetersen) |
Keep PRs green and up to date |
| PM | Cindy's Navi (cixzhang) |
Keep tasks/issues tidy, wiki content up to date |
| Reviewer | Cindy's Navi (cixzhang) |
Lightweight reviews for guidelines compliance |
| Vibe Test Runner | Cindy's Navi (cixzhang) |
Run nightly vibe tests comparing Astryx vs baseline |
| Component Auditor | Cindy's Navi (cixzhang) |
Ensure components follow theming, API, a11y, and export conventions |
| Quartermaster | DJ's Navi (thedjpetersen) |
Maintain OSS→internal consumer supply chain |
| Doc Reviewer | Joey's Navi (josephfarina) |
Keep component docs accurate and parser-compatible |
| Designer | Ernest's Navi (ernestt) |
Score AI-generated UIs against ideal reference images |
| Figma Librarian | Ernest's Navi (ernestt) |
Keep the Astryx OSS Figma Library in sync with code |
| Dependencies | Cindy's Navi (cixzhang) |
Keep dependencies free of known vulnerabilities |
Goal: Keep PRs green and up to date.
Scope:
- Fix CI failures on Navi-authored PRs (build, test, lint)
- Re-run flaky CI checks (screenshots, a11y)
- Flag stale PRs and branches
- Monitor dependency alerts
- Diagnose (but don't fix) CI failures on non-Navi PRs
Does NOT do:
- Issue triage or labeling (that's PM)
- Code review for guidelines (that's Reviewer)
- Feature implementation
Full instructions: Night Watch QA
Goal: Keep tasks and issues tidy, wiki content up to date.
Scope:
- Triage open issues — ensure they have enough detail to implement
- Label issues correctly
- Keep wiki documentation current and organized
- Flag under-specified issues with clarifying questions
- Track issue-to-PR linkage
Does NOT do:
- Fix CI or push code (that's QA)
- Review PR code quality (that's Reviewer)
- Close or resolve issues unilaterally
Full instructions: Night Watch PM
Goal: Lightweight reviews on PRs to ensure they adhere to project guidelines.
Scope:
- Review PRs for design token usage (no hardcoded values)
- Check accessibility: ARIA roles, keyboard nav, aria-label on icon buttons
- Verify primitive reuse (Dialog, Button, Icon, etc.)
- Check composition patterns: files under ~400 lines, displayName set
- Ensure
:hoverstyles use@media (hover: hover)guards - Stick to easy-to-evaluate, objective checks
Does NOT do:
- Approve PRs — never approve without a human
- Subjective design feedback
- Fix CI or push code (that's QA)
- Issue triage (that's PM)
Full instructions: Night Watch Reviewer
Goal: Run nightly vibe tests comparing Astryx vs baseline code generation quality.
Scope:
- Run the full vibe test pipeline once per night (not hourly)
- Sample 10 prompts, spawn sub-agents for Astryx and baseline
- Deploy report to gh-pages
- Post results as a GitHub issue
- Notify human with summary
Does NOT do:
- Run more than once per night
- Fix CI or push code (that's QA)
- Review PRs (that's Reviewer)
- Triage issues (that's PM)
Full instructions: Night Watch Vibe Test Runner
Goal: Ensure all components follow theming, API, accessibility, and export conventions.
Scope:
- Audit CSS variable usage (no hardcoded colors, shadows, spacing, radii, typography)
- Verify xdsThemeProps placement, variant classNames, sub-element targeting
- Check component reuse (Button for close buttons, Icon with registry, Divider)
- Enforce prop naming (boolean
is/has, callbackon{Verb},start/end) - Verify type/context naming (unprefixed
<Component>*), component structure (displayName, file header, BaseProps) - Check input component consistency (field props, status shape, size variants)
- Audit accessibility contracts (label, ARIA wiring, focus preservation)
- Verify export hygiene (index.ts, type exports, tsup entry points)
- Fix findings via PRs, flag ambiguous cases for human review
Does NOT do:
- Subjective design decisions
- Review PRs (that's Reviewer)
- Fix CI (that's QA)
- Triage issues (that's PM)
Full instructions: Night Watch Component Auditor
Goal: Maintain the supply chain from OSS Astryx (GitHub) through to internal consumers, continuously improving parity with mockups and features.
Scope:
- Monitor automated code sync from GitHub to internal consumers
- Ensure Astryx packages are consumable after import
- Track internal template integration and parity with designs
- Resolve path resolution and build issues in the import pipeline
Does NOT do:
- Fix CI on PRs (that's QA)
- Triage GitHub issues (that's PM)
- Review PRs for guidelines (that's Reviewer)
- Implement new Astryx components on GitHub (daytime feature work)
This role primarily operates on internal infrastructure. Detailed instructions are on the internal wiki.
Full instructions: Night Watch Quartermaster
Goal: Keep component docs compatible with Storybook autodocs and catch content-level issues the type checker can't see.
Scope:
- Validate JSDoc
@exampleblocks for Storybook compatibility (notsxtag, single example) - Detect prop documentation drift (TypeScript interface vs
.doc.mjsprops) - Check example quality and composition patterns
- Validate legacy README structure for the 6 unmigrated components
Not in scope: .doc.mjs type structure — CI handles this via tsc --checkJs.
- Send PRs to fix issues found
Does NOT do:
- Fix CI or push code (that's QA)
- Review PR code quality (that's Reviewer)
- Triage issues (that's PM)
- Rewrite component implementations
- Make subjective style changes
Full instructions: Night Watch Doc Reviewer
Goal: Score AI-generated UI screenshots against human-provided ideal reference images.
Scope:
- Maintain ideal reference images in
internal/vibe-tests/ideals/(committed from Drive uploads) - Run
design-judge.tsafter each nightly vibe test to produce Design dimension scores - Include Design scores in the Night Watch report
- Coordinate with designers on ideal image coverage and quality
Does NOT do:
- Run the vibe test pipeline itself (that's Vibe Test Runner)
- Fix CI or push code fixes (that's QA)
- Triage issues (that's PM)
- Review PRs for guidelines (that's Reviewer)
Full instructions: Night Watch Designer
Goal: Keep the Astryx OSS Figma Library in sync with the code in packages/core/src/.
Scope:
- Detect code changes to component prop interfaces since last run
- Classify changes (new prop, removed prop, renamed prop, new variant value, new component)
- Read current Figma component state via
use_figmaMCP tool - Modify existing Figma components in-place for prop changes
- Build new Figma components from scratch using the CC Figma Builder 4-phase workflow
- Respect human overrides via three-way diff (CODE / FIGMA / AGENT state)
- Use native Figma Slots (
SLOTproperty +SlotNode) for freeform ReactNode props
Does NOT do:
- Visual design judgment (that's Designer)
- Code review or PR review (that's Reviewer)
- CI fixes (that's QA)
- Issue triage (that's PM)
- Component code auditing (that's Component Auditor)
- Publish the Figma library — humans publish
Schedule: Once per day at 12pm PST, Mon–Fri. Requires Ernest's Mac with Figma open via MCP.
Full instructions: Night Watch Figma Librarian
Goal: Keep dependencies free of known vulnerabilities.
Scope:
- Check Dependabot alerts weekly (Sundays 6am PST)
- Auto-resolve transitive dependency vulnerabilities via pnpm overrides
- Verify fixes with build + test (+ flow tests for tooling deps like vite)
- File GitHub issues for major version bumps requiring human review
- Create verified PRs for all auto-fixes
Does NOT do:
- Apply major version bumps without human review
- Merge PRs
- Fix CI on other PRs (that's QA)
- Feature work or refactoring
Full instructions: Night Watch Dependencies
PM, Reviewer, Vibe Test Runner, Component Auditor, and Dependencies are assigned to Cindy's Navi. PM and Reviewer run once per night at 2am PST. Component Auditor runs at 3am PST. Vibe Test Runner runs at 4am PST. Dependencies runs weekly on Sundays at 6am PST. QA and Quartermaster run independently on DJ's Navi — QA focuses on PR health, Quartermaster on the import pipeline and ensuring @xds/core is consumable internally. Doc Reviewer runs on Joey's Navi with its own nightly schedule. Figma Librarian runs on Ernest's Navi once daily at 12pm PST (requires Mac + Figma MCP).
- Night Watch API Auditor — (Deprecated, merged into Component Auditor)
- Night Watch Theme Auditor — (Deprecated, merged into Component Auditor)
- Night Watch QA Journal — Operational log for QA role runs
- Night Watch Retrospective — Measures whether Night Watch comments provide value and adapts behavior
All roles share the same "What NOT to Do" constraints from the Night Watch Overview.
To add, remove, or reassign a role, see Night Watch Adding Roles. Update this page to reflect the change.