Skip to content

feat(agentic): vendor-neutral agentic coding framework - #613

Merged
NhanLuongBGSV merged 7 commits into
mainfrom
feat/612-agentic-coding-framework
Aug 7, 2026
Merged

feat(agentic): vendor-neutral agentic coding framework#613
NhanLuongBGSV merged 7 commits into
mainfrom
feat/612-agentic-coding-framework

Conversation

@NhanLuongBGSV

Copy link
Copy Markdown
Contributor

Closes #612.

What

A repo-resident, vendor-neutral agentic coding framework so any AI agent — Claude Code, opencode, openclaw, or the next tool — loads the same rules, memory, skills, and repo map; follows the same implement → test → review → commit → PR → deploy flow; and avoids re-scanning the whole repo each session (token savings).

Entry points

  • AGENTS.md — vendor-neutral entry (agents.md convention), read by any tool.
  • CLAUDE.md — Claude Code adapter (@imports AGENTS.md + rules).

Canonical content under agentic/

(chosen over .agent/ to avoid colliding with the existing .agents/ E2E suite)

  • RULES.md / CONVENTIONS.md — always-loaded hard rules + style.
  • SETUP.md — per-tool wiring (Claude Code / opencode / openclaw).
  • skills/ — 9 load-on-demand playbooks: understand-the-repo, implement-feature, run-tests, code-review, security-review, commit-and-pr, deploy, docs-update, learn-and-update.
  • memory/ — repo-resident knowledge base (facts + MEMORY.md index); shared across tools/machines, reviewable in PRs (supersedes user-local memory for shared knowledge).
  • map/INDEX.md + TREE.md: pointers to the real maps, not duplicates.
  • learning/ — continuous-learning layer (best-practices, trends, lessons).

Wires into existing knowledge (no duplication)

docs/architecture/, docs/capabilities/, .agents/SITEMAP.md, docs/getting-started/, docs/principles/.

CI drift check

scripts/check-agent-map.sh + .github/workflows/agent-map-check.yml verify every framework markdown link resolves (catches drift when docs/structure move). Verified clean locally (28 files, all links resolve).

How verified

  • All framework markdown links resolve (scripts/check-agent-map.shagent-map OK).
  • Backend paths corrected against real layout (backend/src/{routes/v2/<domain>,controllers/<area>.controller.js,services/<area>.service.js,middlewares/rateLimiter.js}).
  • Memory facts verified against code (e.g. authLimiter defined in backend/src/middlewares/rateLimiter.js but unused; PR CI is ECA-only).
  • Skill format consistent across all 9 skills (When to use / Steps / Guardrails / Exit criteria).
  • Git identity NhanLuongBGSV / nhan.luongnguyen@vn.bosch.com, git commit -s, ECA-signed.

Design decisions (resolved per #612)

dir agentic/ · reuse docs/capabilities/ as the map · committed map + CI drift check · learning included (manual trigger) · full scope (no phasing). See docs/agentic-framework/PROPOSAL.md.

🤖 Generated with Claude Code

NhanLuongBGSV and others added 7 commits August 7, 2026 01:04
…ork (#612)

Proposal only — no implementation. Defines a repo-resident, vendor-neutral
agentic coding framework (.agent/ + AGENTS.md/CLAUDE.md adapters) so any
AI agent (Claude Code, opencode, openclaw, …) loads the same rules, memory,
skills, and repo map; follows the same implement/test/review/commit/PR/deploy
flow; and avoids re-scanning the repo each session (token savings). Includes
a continuous-learning layer, per-tool mapping, phased migration, and open
decisions for review.

Co-Authored-By: Claude <noreply@anthropic.com>
Add a repo-resident, vendor-neutral agentic coding framework so any AI
agent (Claude Code, opencode, openclaw, …) loads the same rules, memory,
skills, and repo map; follows the same implement → test → review → commit
→ PR → deploy flow; and avoids re-scanning the whole repo each session
(token savings).

Entry points:
- AGENTS.md  — vendor-neutral entry (agents.md convention), read by any tool
- CLAUDE.md  — Claude Code adapter (@imports AGENTS.md + rules)

Canonical content under agentic/ (distinct from the existing .agents/ E2E
suite):
- RULES.md, CONVENTIONS.md — always-loaded hard rules + style
- SETUP.md — per-tool wiring (Claude Code / opencode / openclaw)
- skills/ — 9 playbooks: understand-the-repo, implement-feature, run-tests,
  code-review, security-review, commit-and-pr, deploy, docs-update,
  learn-and-update (load-on-demand)
- memory/ — repo-resident knowledge base (facts + index); supersedes
  user-local memory for shared knowledge
- map/ — INDEX.md + TREE.md: pointers to the real maps, not duplicates
- learning/ — continuous-learning layer (best-practices, trends, lessons)

The framework wires into existing repo knowledge rather than duplicating:
docs/architecture/, docs/capabilities/, .agents/SITEMAP.md,
docs/getting-started/, docs/principles/.

CI: scripts/check-agent-map.sh + .github/workflows/agent-map-check.yml
verify all framework markdown links resolve (drift detection). Verified
clean locally (28 files, all links resolve).

Proposal updated: docs/agentic-framework/PROPOSAL.md marked implemented.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: NhanLuongBGSV <nhan.luongnguyen@vn.bosch.com>
…review fixes

The framework wrongly hardcoded one user's identity (NhanLuongBGSV /
nhan.luongnguyen@vn.bosch.com) as a repo-wide commit rule. Identity is
personal — each contributor commits with their own ECA-signed account.
Repo rules now say "commit with your own ECA-signed identity"; the
personal identity stays in user-local memory, not committed files.

Self-review (dogfooded the framework's own understand-the-repo + code-review
skills to validate the framework against the real repo):
- Removed the hardcoded identity from AGENTS.md, CLAUDE.md, RULES.md,
  memory/verified-facts.md, skills/commit-and-pr.md, skills/implement-feature.md,
  PROPOSAL.md. Drift check still clean; no identity refs remain.
- Verified memory claims against code: authLimiter is defined+exported in
  backend/src/middlewares/rateLimiter.js and unused (gotchas.md ✓); routes/v2
  has exactly 4 domains content/system/user-management/vehicle-data
  (verified-facts.md ✓); no Jest/Playwright runs on PRs (gotchas.md ✓).
- Corrected gotchas.md: PR CI now also runs agent-map-check for agentic/+
  docs changes (this PR adds it), so "ECA-only" was stale.
- Corrected security-review.md: /security-review is a Claude Code built-in
  harness skill (available in any repo), not something this repo ships.
- Confirmed all 9 skills have the 4 required sections, all TREE.md paths
  exist, MEMORY.md index matches its files, and all markdown links resolve.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: NhanLuongBGSV <nhan.luongnguyen@vn.bosch.com>
…ll + CI)

The framework had a security-review skill but no license check — a gap for
an Eclipse project where source license headers matter. This adds the
license half and wires both into the flow.

- agentic/skills/license-check.md — new skill: verify changed .js/.ts/.tsx
  carry the repo Eclipse/MIT SPDX header, no existing headers stripped, no
  copyleft/proprietary vendored code, deps MIT-compatible.
- scripts/check-license-headers.sh + .github/workflows/license-headers-check.yml
  — CI gate that checks only CHANGED source files vs the PR base (pre-existing
  header debt elsewhere doesn't block). Verified clean on this branch.
- CONVENTIONS.md — License (Eclipse/MIT) section: header requirement, no
  copyleft, CI pointer.
- skills/README.md + AGENTS.md + implement-feature.md + code-review.md —
  wire license-check into the core flow alongside security-review.

Ran the round on this PR's own diff (dogfood): no .js/.ts/.tsx changed →
license-headers OK; no real secrets in committed files (only prose rules);
check-agent-map.sh is pure os.path (no injection); workflow uses
actions/checkout@v4, no secrets exposed. Security + license: clean.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: NhanLuongBGSV <nhan.luongnguyen@vn.bosch.com>
…ax + citations

Adversarial self-review of the whole framework (read every file, verified
claims against the repo). Findings + fixes:

- CLAUDE.md used `@import ./file` — wrong. Claude Code's import syntax is
  `@path` (e.g. `@AGENTS.md`); `@import` would not expand. Fixed to
  `@AGENTS.md` / `@agentic/RULES.md` / `@agentic/CONVENTIONS.md`. Verified
  the imported chain has no stray `@` tokens (no unintended nested imports).
  Updated 9 prose references across SETUP/README/AGENTS/CONVENTIONS/decisions/
  best-practices/PROPOSAL to say `@path`, not `@import`.

- memory/verified-facts.md cited `frontend/vite.config.ts` for the dev port;
  the port (3210) is actually in `frontend/package.json`'s `dev` script.
  Fixed citation.

- SETUP.md skill-symlink loop also symlinked README.md as a skill; now skips
  the index.

Verified accurate (no change needed): deploy.md env keys match
.env.prod.sample exactly; security-review reference docs
(docs/reference/csp.md, authentication-cookie-handling.md,
architecture/plugin-system.md) exist; memory facts (4 route domains,
authLimiter unused, tsc&&vite build) match code; map/TREE.md paths exist;
all 9 skills have the 4 required sections; drift check + license-headers
check pass; no @import remains.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: NhanLuongBGSV <nhan.luongnguyen@vn.bosch.com>
…s label

Third adversarial self-review pass (verified every concrete technical claim
in the skills against the code; scanned for contradictions + vendor leaks).

Verified accurate against code (no change needed):
- security-review.md plugin claims all real: window.DAPlugins
  (PluginPageRender.tsx), PluginAPI, POST /v2/plugin/upload/:slug
  (plugin.route.js:36), system unzip via spawn('unzip',...) (plugin.controller.js:140).
- Branch naming + PR title format consistent across CONVENTIONS.md,
  implement-feature.md, commit-and-pr.md (types feat/docs/fix/chore/refactor).
- backend/src/typedefs and backend/src/docs dirs exist.

Fixes:
- Vendor-neutrality leak: Co-Authored-By: Claude <noreply@anthropic.com> was
  hardcoded in CONVENTIONS.md and commit-and-pr.md. Now conditional — Claude
  Code uses that trailer; other tools use their equivalent or omit. RULES.md
  already had the "(or the tool's equivalent)" caveat. commit-and-pr exit
  criteria softened to not require the Co-Authored-By trailer.
- map/TREE.md: typedefs/ labeled "TS-style type defs" but backend is JS —
  corrected to "shared JSDoc @typedef definitions".

Drift check (29 files) + license-headers check still pass.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: NhanLuongBGSV <nhan.luongnguyen@vn.bosch.com>
…, ops, plugins, secrets)

Scanned the codebase, docs, and capability catalog to identify recurring
work + risk areas not covered by the original 10 skills, then authored 13
new skill playbooks grounded in real repo paths/commands:

Debug & correctness:
- debug.md — symptom→where-to-look decision tree (winston/morgan, Docker/pm2
  logs, browser console [no ErrorBoundary], Socket.IO frames, Playwright
  trace) + a common-symptoms table (401 loop, empty workspace-tree, 503,
  CACHE_URL staleness, 6bd6ccb seed race, 500 bypass, StrictMode double-call).
- find-race-conditions.md — concurrency hunt for the no-transactions codebase
  (doc-level atomicity only; read-modify-write→findOneAndUpdate; counters;
  token single-flight; Socket.IO ordering; seed-vs-save; CACHE_URL eventual
  consistency).

Build (add/change):
- add-endpoint.md — v2 endpoint procedure (domain route → service → thin
  controller → model → auth gating → Joi validation → register in domain
  index.js → Jest → capability doc → SITEMAP).
- add-frontend-feature.md — atomic-design placement, configs/routes.tsx,
  Zustand store, usePermissionHook, API client, E2E spec.
- db-schema-change.md — safe Mongoose evolution (additive fields, indexes/TTL
  citing the Token TTL gap, backfill scripts; no migration tool/transactions).
- realtime-event.md — adding a Socket.IO event (config/socket.js, kit-server
  relay via RUNTIME_SERVER_URL, subscribe→run→stop lifecycle).
- add-test.md — Jest (backend) + Playwright (.agents helpers/fixtures/snapshot
  policy).

Review & health:
- performance-review.md — Mongo N+1/populate/indexes, external CACHE_URL/
  LOG_URL calls, frontend bundle (rollup-plugin-visualizer), Socket.IO fan-out.
- dependency-upgrade.md — npm audit/Dependabot, breaking-change check, tests,
  license compatibility (450 vulns flagged on the repo).

Deploy & ops:
- troubleshoot-deploy.md — unhappy-path symptom→cause→fix (env, ports, Mongo,
  PROTOTYPES_PATH bind-mount [d6807b4], host.docker.internal/CODER_URL).
- coder-workspace.md — VS Code-in-browser integration (instance-setup/coder +
  plans, workspace lifecycle).

Specialized:
- plugin-authoring.md — window.DAPlugins/PluginAPI, unsandboxed model,
  e2e-simple-plugin fixture, upload.
- secrets-incident.md — leaked-secret response (identify, blast radius,
  rotate-at-source, scrub, incident note).

Wiring: skills/README.md index reorganized into categories (23 skills) with
an expanded core-flow diagram; AGENTS.md points to the full index.

Verified: all 13 skills have the 4 required sections; drift check passes
(42 framework files, all links resolve); license-headers check passes;
spot-checked debug.md + add-endpoint.md claims against code (validations/
<area>.validation.js + index.js, middlewares/validate.js, socket.js:31
handshake.query.access_token, routes/v2/index.js aggregation — all real).

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: NhanLuongBGSV <nhan.luongnguyen@vn.bosch.com>
@NhanLuongBGSV
NhanLuongBGSV merged commit 7a893d2 into main Aug 7, 2026
3 checks passed
@NhanLuongBGSV
NhanLuongBGSV deleted the feat/612-agentic-coding-framework branch August 7, 2026 01:44
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.

Apply a vendor-neutral agentic coding framework (skills, flows, memory) so any AI agent works the same way in this repo

1 participant