Skip to content

feat: source FFCA conventions from VGV Engineering - #4

Open
Statyk7 wants to merge 7 commits into
mainfrom
feat/source-ffca-from-vgv-engineering
Open

Statyk7 wants to merge 7 commits into
mainfrom
feat/source-ffca-from-vgv-engineering

Conversation

@Statyk7

@Statyk7 Statyk7 commented Sep 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

The canonical FFCA documentation moved from Notion to VGV Engineering, where it is split across seven pages and has picked up new material. Every page there serves a clean Markdown twin at the same path with a .md extension, so references/ffca/ is now a byte mirror of upstream rather than a hand-maintained paraphrase.

  • scripts/sync_reference.dart fetches the mirror, and --check reports drift.
  • A weekly reference drift workflow runs that check. It is scheduled rather than a PR gate so an upstream edit cannot fail an unrelated contributor's build.
  • Skills now cite a file and a section, qualified with ${CLAUDE_PLUGIN_ROOT} so they resolve from the plugin rather than the user's working directory.
  • The hook command quotes ${CLAUDE_PLUGIN_ROOT}, clearing the last claude plugin validate warning.

What the skills now teach, following upstream

  • Command and Query replace "use case" for the classes in use_cases/. The folder keeps its name, the classes do not.
  • Presentation-only features: a _presentation package with no domain or data sibling, composing other features' domains into a screen.
  • Deferred loading: a package the app loads deferred must not also be reachable eagerly, and the failure is silent.
  • Widget slots as visual extension points, the conditions on sharing a widget across features, and where a shared widget should live.
  • Split routing tables must be part of one library or go_router_builder drops the routes without failing the build.
  • Converter classes for DTO mapping, and Provider as the module standard.

Dropped with upstream: Actions and Intents, Makefile, Non-Goals, Open Discussions.

The layer policy itself is unchanged, so validate_layers.dart needs no new rules. A presentation-only fixture locks that archetype into the test suite.

Verification

  • dart analyze --fatal-infos, dart format, and dart test (25 tests) pass.
  • markdownlint and cspell report 0 issues.
  • claude plugin validate . passes with no warnings.
  • dart run scripts/sync_reference.dart --check reports the mirror is up to date.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X1XbE7ufv8YHpJLV4MTZGQ

Statyk7 and others added 2 commits September 24, 2026 10:25
The canonical FFCA documentation moved from Notion to VGV Engineering,
where it is now split across seven pages and has picked up new material.

Every page on engineering.verygood.ventures serves a clean Markdown twin
at the same path with a .md extension, so references/ffca/ is now a byte
mirror of upstream rather than a hand-maintained paraphrase.
sync_reference.dart fetches it, --check reports drift, and a scheduled
workflow runs that check weekly. It is scheduled rather than a PR gate so
an upstream edit cannot fail an unrelated contributor's build.

Content the skills now teach, following upstream:

- Command and Query replace "use case" for the classes in use_cases/.
  The folder keeps its conventional name; the classes do not.
- Presentation-only features, a _presentation package with no domain or
  data sibling, composing other features' domains into a screen.
- Deferred loading: a package the app loads deferred must not also be
  reachable eagerly, and the failure is silent.
- Widget slots as visual extension points, the conditions on sharing a
  widget across features, and where a shared widget should live.
- Split routing tables must be part of one library or go_router_builder
  drops the routes without failing the build.
- Converter classes for DTO mapping, and Provider as the module standard.

Dropped with upstream: Actions and Intents, Makefile, Non-Goals, Open
Discussions.

The layer policy itself is unchanged, so validate_layers.dart needs no
new rules. A presentation-only fixture locks that archetype into the test
suite. Skill citations now name a file and a section, and are qualified
with ${CLAUDE_PLUGIN_ROOT} so they resolve from the plugin rather than
the user's working directory.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SNHNDnPH7H7y2m4Pbsbmme
claude plugin validate warned that an unquoted ${CLAUDE_PLUGIN_ROOT}
splits into several words when the install path contains a space.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X1XbE7ufv8YHpJLV4MTZGQ
@Statyk7
Statyk7 requested a review from ryzizub September 24, 2026 16:35
Statyk7 and others added 5 commits September 24, 2026 10:50
The two slash commands were shown in a single bash block, which reads
as something to paste at once. Inside a Claude Code session the second
only works after the first completes, so present them as separate steps
and add the terminal one-liner, matching the sibling plugin READMEs.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X1XbE7ufv8YHpJLV4MTZGQ
The FFCA section root returns 404 upstream. The overview page is the
landing URL.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X1XbE7ufv8YHpJLV4MTZGQ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant