Repository navigation
Docs: point CLAUDE.md at docs/ and install the L2 AI layer - #29
Merged
Merged
Conversation
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>
Collaborator
Author
|
Follow-up commit
|
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CLAUDE.md: thePipeline layers (L1–L4)table andTypeScript actionssectionduplicated
docs/pipeline-map.mdanddocs/architecture.mdinline. Replaced both with shortsummaries 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,
GitHubClientfacade, testing conventions indocs/architecture.md; nopass-through layers, nesting cap, composite-action secrets context in both
docs/architecture.mdand
docs/pipeline-map.md).gforce-github-actionsL2 skill vianpx skills add Gforce-Innovation-Kft/gforce-ai@gforce-github-actions(vendored into.agents/skills/,symlinked into
.claude/skills/, pinned inskills-lock.json).gha-workflow-authorL2 agent by copying it fromgforce-aiinto.claude/agents/.AGENTS.mdas a symlink toCLAUDE.mdfor cross-vendor coverage.CLAUDE.mddrops 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-actionsskill'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 werefound 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.
docs/consuming-sf-cicd.mdcontradicted the skill it's routed from. It said all logiclives "behind the
v1release tag", referenced actions by@v1, and told readers to copyexamples/sf-pr-validate.yml/examples/sf-release.yml— filenames that don't existpost-ADR-0002-rename (they're
examples/reusable-sf-pr-validate.yml/examples/reusable-sf-release.ymlnow). The skill's Hard Stops forbid@v1in new work, so areader following this doc's route was steered directly into the prohibited thing. Its sibling
docs/consuming-sf-dispatch.mdwas updated to@v2during the rename; this one was missed.Fixed both the tag and the filenames; verified the corrected filenames actually exist under
examples/.docs/claude-actions-reference.mdwas 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) addedsf-artifact-build,sf-artifact-deploy,sf-env-config-apply, and PR fix(org-deploy): move the marker with curl, not gh #28 (020dc10) touchedreusable-sf-org-deploy.yml,smoke-sf-artifact.yml,smoke-sf-org-login.yml— none had entries, so the doc the skillroutes 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 calledout in code comments) — not from imagination.
While writing the
smoke-sf-org-login.ymlentry I noticed the existingsf-org-loginentryabove it (unrelated to the six assets in scope here) predates PR feat/sf org login github env #16, which added a
credential-source: github-envpath with different input names than the entry documents. Leftit 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.mddocs/...link inCLAUDE.mdresolves to a real filegrep -rn '@v1' docs/consuming-sf-cicd.md→ no matchesdocs/claude-actions-reference.md.claude/skills/gforce-github-actionsis a symlink, not a forked copy.claude/agents/gha-workflow-author.mdpresentgit status --shortclean except pre-existing untrackeddocs/proposals/, left untouchednpm run all— format, lint, typecheck, bundle, test at 95% gate,dist:verify) passed🤖 Generated with Claude Code