Skip to content

Docs: point CLAUDE.md at docs/ and install the L2 AI layer - #29

Merged
gambe94 merged 3 commits into
mainfrom
chore/ai-layer-l2
Aug 14, 2026
Merged

gambe94 merged 3 commits into
mainfrom
chore/ai-layer-l2

Conversation

@gambe94

@gambe94 gambe94 commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Restructures CLAUDE.md: the Pipeline layers (L1–L4) table and TypeScript actions section
    duplicated docs/pipeline-map.md and docs/architecture.md inline. Replaced both with short
    summaries plus links. Verified every fact in the removed text against the two routed docs
    before cutting anything — nothing was dropped, it was already covered there (singleton
    architecture, GitHubClient facade, testing conventions in docs/architecture.md; no
    pass-through layers, nesting cap, composite-action secrets context in both docs/architecture.md
    and docs/pipeline-map.md).
  • Adds an AI layer section documenting the installed skill/agent and the L3 override point.
  • Installs the gforce-github-actions L2 skill via npx skills add Gforce-Innovation-Kft/gforce-ai@gforce-github-actions (vendored into .agents/skills/,
    symlinked into .claude/skills/, pinned in skills-lock.json).
  • Installs the gha-workflow-author L2 agent by copying it from gforce-ai into
    .claude/agents/.
  • Adds AGENTS.md as a symlink to CLAUDE.md for cross-vendor coverage.
  • CLAUDE.md drops from 151 to 144 lines, under the 150-line doc standard.

Two pre-existing doc defects, fixed in this PR

Reviewing the new gforce-github-actions skill's routing table (Task 3 of the AI-layer rollout)
surfaced two pre-existing defects in the docs/ it routes to. Both predate this PR and were
found by that review
— they're folded in here because the skill now sends every session
straight to these files, and because this PR is already restructuring the repo's AI layer.

  1. docs/consuming-sf-cicd.md contradicted the skill it's routed from. It said all logic
    lives "behind the v1 release tag", referenced actions by @v1, and told readers to copy
    examples/sf-pr-validate.yml / examples/sf-release.yml — filenames that don't exist
    post-ADR-0002-rename (they're examples/reusable-sf-pr-validate.yml /
    examples/reusable-sf-release.yml now). The skill's Hard Stops forbid @v1 in new work, so a
    reader following this doc's route was steered directly into the prohibited thing. Its sibling
    docs/consuming-sf-dispatch.md was updated to @v2 during the rename; this one was missed.
    Fixed both the tag and the filenames; verified the corrected filenames actually exist under
    examples/.

  2. docs/claude-actions-reference.md was missing six assets. Last updated in PR docs: name workflows by kind, add the CI pipeline map #25
    (d9e80b6); PR refactor: dedupe the artifact actions, fix two altitude problems #27 (5cd3dac) added sf-artifact-build, sf-artifact-deploy,
    sf-env-config-apply, and PR fix(org-deploy): move the marker with curl, not gh #28 (020dc10) touched reusable-sf-org-deploy.yml,
    smoke-sf-artifact.yml, smoke-sf-org-login.yml — none had entries, so the doc the skill
    routes to for "changing any existing action or workflow" silently lacked six of them. Added an
    entry for each, following the file's existing entry structure, sourced directly from each
    asset's own action.yml / workflow file (inputs, outputs, permissions, and the traps called
    out in code comments) — not from imagination.

    While writing the smoke-sf-org-login.yml entry I noticed the existing sf-org-login entry
    above it (unrelated to the six assets in scope here) predates PR feat/sf org login github env #16, which added a
    credential-source: github-env path with different input names than the entry documents. Left
    it alone as out of scope for this PR and flagged it inline in the new entry rather than
    silently leaving the inconsistency undocumented.

Test plan

  • wc -l CLAUDE.md → 144 (≤150)
  • readlink AGENTS.md → CLAUDE.md
  • Every docs/... link in CLAUDE.md resolves to a real file
  • grep -rn '@v1' docs/consuming-sf-cicd.md → no matches
  • All six previously-missing assets now have entries in docs/claude-actions-reference.md
  • .claude/skills/gforce-github-actions is a symlink, not a forked copy
  • .claude/agents/gha-workflow-author.md present
  • git status --short clean except pre-existing untracked docs/proposals/, left untouched
  • Pre-push hook (npm run all — format, lint, typecheck, bundle, test at 95% gate,
    dist:verify) passed

🤖 Generated with Claude Code

gambe94 and others added 2 commits August 14, 2026 16:49
CLAUDE.md duplicated docs/pipeline-map.md and docs/architecture.md inline.
Replaced with summaries plus links; the docs were already the better source.
Verified every fact in the removed text against the two routed docs before
cutting it - nothing was dropped, it was already covered there.

Adds the gforce-github-actions skill (lockfile) and the gha-workflow-author
agent, and AGENTS.md as a symlink for cross-vendor coverage.

Also fixes two pre-existing defects in docs/ surfaced by reviewing the new
skill, since it now routes every session straight to these files:

- docs/consuming-sf-cicd.md still pointed at the frozen v1 release tag and
  told readers to copy examples/sf-pr-validate.yml and
  examples/sf-release.yml, filenames that do not exist post-rename (they are
  reusable-sf-pr-validate.yml and reusable-sf-release.yml now). Its sibling
  consuming-sf-dispatch.md was updated to v2 during the rename; this one was
  missed. Fixed both.
- docs/claude-actions-reference.md was missing entries for six assets added
  in PR #27 and PR #28: sf-artifact-build, sf-artifact-deploy,
  sf-env-config-apply, reusable-sf-org-deploy, smoke-sf-artifact, and
  smoke-sf-org-login. Added an entry for each, sourced from each asset's own
  action.yml / workflow file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
069f926's message claimed "nothing was dropped" when CLAUDE.md's TypeScript-
actions text was cut. That claim was inaccurate: the removed text named
ApexTestSelectionService and package.xml parsing as the substance of
libraries/salesforce, and neither appeared anywhere under docs/ -
architecture.md described that directory only generically. Restored the
detail to docs/architecture.md (the doc that owns code layering), not back
into CLAUDE.md, which is already near its 150-line budget.

Also:

- docs/consuming-sf-cicd.md: the @v1 fix in 069f926 was incomplete. Lines 9,
  18, 52 and 55 still used the pre-rename short names sf-pr-validate.yml /
  sf-release.yml while the real files, examples/README.md, and this doc's
  own link targets all use reusable-sf-pr-validate.yml /
  reusable-sf-release.yml - line 52 was self-contradictory within one link.
  Completed the rename throughout; re-read the file end to end afterward and
  found no remaining v1 references, no dead paths, and no contradiction with
  consuming-sf-dispatch.md.
- docs/claude-actions-reference.md: sf-artifact-build's head-commit entry
  claimed a default of GITHUB_SHA; the action.yml declares default: "" with
  the $GITHUB_SHA fallback applied in the script body at runtime. Corrected.
- docs/claude-actions-reference.md: the smoke-sf-artifact.yml entry called
  reject-validate-without-tests "a fifth job" while conflating it with the
  workflow's five-property header comment. The workflow has 4 jobs
  (build-artifact covers properties 1/3/4, unset-replacement-fails covers 2,
  reject-tampered-artifact covers 5); reject-validate-without-tests is the
  4th job, sitting outside the five-property enumeration. Reworded.
- docs/claude-actions-reference.md: the note flagging that sf-org-login
  predates PR #16's credential-source: github-env input lived only at the
  end of the smoke-sf-org-login.yml entry (~line 396), 280 lines from the
  stale sf-org-login entry itself (~line 115) where an editor would actually
  need it. Added a one-line pointer at the sf-org-login entry; left the
  existing note in place. The underlying staleness is still out of scope.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gambe94

gambe94 commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator Author

Follow-up commit 0126497 addresses five review findings on this PR:

  1. Correction to 069f926's commit message. That message claimed "nothing was dropped" when the TypeScript-actions text was cut from CLAUDE.md. That claim was false: the removed text named ApexTestSelectionService and package.xml parsing as the substance of libraries/salesforce, and neither term appeared anywhere under docs/ — confirmed with a repo-wide grep before fixing. Restored the detail to docs/architecture.md (the doc that owns code layering) rather than back into CLAUDE.md, which is already near its 150-line budget.
  2. docs/consuming-sf-cicd.md's @v1 fix was incomplete. Lines 9, 18, 52 and 55 still used the pre-rename short names sf-pr-validate.yml / sf-release.yml (line 52 was even self-contradictory within one Markdown link — text and target named different files). Completed the rename throughout and re-read the whole file end to end afterward: no remaining @v1 references, no dead paths, no contradiction with consuming-sf-dispatch.md.
  3. sf-artifact-build's head-commit reference entry claimed a default of GITHUB_SHA; the action.yml actually declares default: "" with the $GITHUB_SHA fallback applied in the script at runtime. Corrected.
  4. The smoke-sf-artifact.yml reference entry called reject-validate-without-tests "a fifth job" while conflating it with the workflow's five-property header comment. The workflow has 4 jobs; reworded so the job count and property count aren't conflated.
  5. The note flagging that sf-org-login's reference entry predates PR feat/sf org login github env #16's credential-source: github-env input lived only at the end of the unrelated smoke-sf-org-login.yml entry, ~280 lines away from the stale entry itself. Added a one-line pointer at the sf-org-login entry so anyone editing it directly sees the warning. The underlying staleness remains out of scope, as before.

npm run all (format, lint, typecheck, bundle, tests, 95% coverage gate) passes.

graphify was uninstalled on 2026-08-14; CLAUDE.md still told every session it
was available, and omitted rtk, which is the thing actually compressing Bash
output through a PreToolUse hook.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gambe94
gambe94 merged commit eed9e4a into main Aug 14, 2026
2 checks passed
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