Skip to content

Add agent skills for the five common model tasks - #400

Draft
jasonleenaylor wants to merge 1 commit into
chore/updateAgentDocsfrom
piece3/agent-skills
Draft

Add agent skills for the five common model tasks#400
jasonleenaylor wants to merge 1 commit into
chore/updateAgentDocsfrom
piece3/agent-skills

Conversation

@jasonleenaylor

@jasonleenaylor jasonleenaylor commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Adds .claude/skills/ with step-by-step guides for the five common model tasks: adding a
property, adding a class, adding a virtual property, writing a data migration, and writing
tests.

Stacked on #364. Review that one first; this PR targets its branch.

Audited, not carried over

Each guide was checked against current source rather than merged as drafted. Six things were
wrong:

Claim Reality
CellarModule table listed a CellarModule id and Notebook at num 24 Ids are Cellar 0, FeatSys 2, Scripture 3, Notebk 4, Ling 5, LangProj 6
Code generation emits "StructureMap registrations" Microsoft.Extensions.DependencyInjection since #393
Change history entries go "below the existing ones" The list in MasterLCModel.xml runs newest first
DataMigration7000072.cs cited for the private-helper pattern It has no private members; 7000065 does
Partial interfaces shown in a new ILexEntryExtensions.cs No *Extensions.cs exists; InterfaceAdditions.cs holds about eighty
Virtual FLIDs "start at 20,000,000" Start at 20,000,001, assigned in attribute construction order, capped at 30,000,000

The last one matters beyond the off-by-one: because the number depends on construction order,
a virtual FLID must never be persisted or hard-coded. The guide now says so.

Also changed

  • Version numbers in worked examples are marked illustrative, with instructions to read the
    current version from MasterLCModel.xml. Four of the five hardcoded 7000072/7000073,
    which is correct today only because no migration has landed since February.
  • The FLEx Bridge metadata cache obligation from WARNING 4 is stated wherever the model
    version gets bumped. None of the guides mentioned it.
  • Build commands carry -m:1, matching Remove obsolete MSBuild wrapper scripts in favor of dotnet build #364.
  • tests/SIL.LCModel.Tests/TestData/ is named rather than described as "the test data
    directory".
  • CustomFieldForTest is noted as a protected nested class on LcmTestBase, so it is only
    reachable from a test deriving from those bases.

Verified as correct and left alone

The migration API surface (CheckVersionNumber, IncrementVersionNumber, UpdateDTO,
RemoveIncludingOwnedObjects, CreatePossibilityList, the repository methods), the
DataMigrationTestsBase template line for line against DataMigration7000072Tests,
Assert.AreEqual for NUnit 3.13.3, IRepository<T>.Count, the CustomFieldForTest six-argument
overload, all seven Overrides*.cs filenames, LexEntry being owner="none", and the
analysis/vernacular defaults being en/fr.

No code changes, so no build or test run is claimed.


This change is Reviewable

Adds .claude/skills/ with step-by-step guides for adding a property, adding a
class, adding a virtual property, writing a data migration, and writing tests.
Each was checked against current source rather than carried over as drafted,
and the following were wrong:

- The CellarModule table named a "CellarModule" id that does not exist and
  put Notebook at num 24. The real ids are Cellar 0, FeatSys 2, Scripture 3,
  Notebk 4, Ling 5, LangProj 6.
- Code generation was described as emitting StructureMap registrations. The
  container is Microsoft.Extensions.DependencyInjection since #393.
- Change history entries were said to go below the existing ones. The list in
  MasterLCModel.xml runs newest first.
- DataMigration7000072.cs was cited as the example of splitting logic into
  private helpers. It has none; 7000065 does.
- Partial interface extensions were shown in a new ILexEntryExtensions.cs.
  InterfaceAdditions.cs already holds about eighty of them.
- Virtual FLIDs were described as starting at 20,000,000. They start at
  20,000,001, are assigned in attribute construction order, and are capped at
  30,000,000, so they must never be persisted or hard-coded.

Version numbers in the worked examples are now marked as illustrative, with
instructions to read the current version from MasterLCModel.xml. The FLEx
Bridge metadata cache obligation from WARNING 4 is stated where the version
gets bumped, build commands carry -m:1, and the test data directory is named
rather than described.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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