AI_GAME_QA_TestCase
Health Uyari
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 9 GitHub stars
Code Basarisiz
- process.env — Environment variable access in scripts/util/add_project_info.js
- fs module — File system access in scripts/util/add_project_info.js
- fs module — File system access in scripts/util/apply_labeling.js
- child_process — Shell command execution capability in scripts/util/create_gsheet_tc_from_json.js
- process.env — Environment variable access in scripts/util/create_gsheet_tc_from_json.js
- fs module — File system access in scripts/util/create_gsheet_tc_from_json.js
- fs module — File system access in scripts/util/crossref_annotate.js
- child_process — Shell command execution capability in scripts/util/deploy_appscript.js
- exec() — Shell command execution in scripts/util/deploy_appscript.js
- process.env — Environment variable access in scripts/util/deploy_appscript.js
- fs module — File system access in scripts/util/deploy_appscript.js
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
tc-team — 게임 QA 테스트케이스 자동 생성 파이프라인 · 구조·게이트·커버리지 원장을 모델이 아니라 결정론 코드가 소유 · ISTQB 테스트 프로세스 기반
AI_GAME_QA_TestCase — tc-team
Deterministic game-QA test-case pipeline.
Hand it a spec and a sheet — get back a reviewed test-case tab whose structure, gates, and coverage ledger are owned by code, not by a model.
Grounded in the ISTQB test process. Stages S1–S3 follow the ISTQB test development process — test analysis → test design → test implementation — and cases are derived with standard ISTQB test-design techniques (equivalence partitioning, boundary values, state transition), not ad-hoc prompting.
Scope, stated honestly: this is a semi-automatic runbook, not a single unattended command. Your Claude Code session acts as the driver and steps through S0–S7, stopping at any gate that fails. Stages S3·S4 require the Workflow (multi-agent orchestration) tool in that session — without it the pipeline halts at S3 (PREREQUISITES §5). A fully unattended driver is on the roadmap. Verified end-to-end on 3 production features.
📖 Before the setup steps, read why it is shaped this way — the eight stages, why review is adversarial, why the sheet is written exactly once, and the two lessons that cost something:
Read it in English · 한국어로 읽기 — same write-up, 같은 글의 한국어판
⚠️ v4.0.0 — the v2 engine has been retired
This release replaces the tc-팀-v2 multi-agent orchestrator with tc-team, a two-lane pipeline.
If you are running v2, read Migrating from v2 before you pull.
⚡ TL;DR
- Two lanes, strictly separated — the LLM writes sentences and makes judgment calls; deterministic code owns structure, gates, and the coverage ledger. No model ever decides whether a gate passes.
- 8 stages (S0–S7) — each with a machine-checkable exit condition
- 7 deterministic gates — design, content, duplicate, origin, coverage seal, golden diff, traceability ledger
- Confidence scoring with zero LLM calls — a rule-based score (R1–R7) tells you which rows deserve human attention
- One sheet touch — everything is assembled and verified locally, then written once and read back for a 0-diff check
- 4 input formats — Confluence URL / PDF / Word / Excel, auto-detected
- No external API — all model calls go through the Claude Code CLI
🎯 The design decision — why determinism
v2 asked a model to author test cases and judge its own output. That works until it doesn't: duplicate rows reach the sheet, fabricated requirements pass review, and coverage is whatever the model says it is. None of it is reproducible.
tc-team draws a hard line:
| Owned by the LLM | Owned by deterministic code |
|---|---|
| Reading the spec, designing coverage | Slicing the spec into rules |
| Writing each test-case sentence | Row structure, IDs, column contracts |
| Adversarial review judgments | Every gate pass/fail decision |
| — | Coverage ledger, exclusions, traceability |
| — | Duplicate detection, origin verification |
| — | Sheet write + read-back diff |
This is a tradeoff, stated plainly: tc-team takes roughly 2.2× the wall-clock time of the v2 engine. What you get back is reproducibility, an auditable coverage ledger, and gates that catch a class of defect v2 shipped silently.
📊 Measured — production run, 2026-07-29
A 277-row feature run, all figures measured rather than asserted:
| Check | Result |
|---|---|
| Rows written live | 277 |
| Sheet read-back diff | 0 |
| Exact duplicate rows reaching the sheet | 0 (the previous v2-era run shipped 3 duplicate pairs) |
| Fabricated requirements caught before review | 7 — 5 confirmed by the cross-reference lens and promoted to "spec confirmation needed" |
| Deterministic core test suite | 14 suites, ALL GREEN |
The 7 fabrications are the important number. In the prior run the same failure mode was only found after the sheet was delivered, by hand.
🏗 Pipeline — S0 to S7
| # | Stage | Lane | What it produces |
|---|---|---|---|
| S0 | Preparation | main | Workspace, spec ingestion, run config |
| S1 | Design | LLM (Opus) | Spec analysis → coverage design → cross-reference → design inspection |
| S2 | Isolation gate + slicing | code | Spec sliced into addressable rules |
| S3 | Sentence fan-out | code + LLM + code | Deterministic skeleton → LLM writes sentences → deterministic merge |
| S4 | Adversarial review + coverage ledger | LLM judgment, code ledger | Findings, verdicts, coverage/exclusions ledger |
| S5 | Apply + gates | code | Fix plan applied, every gate evaluated |
| S6 | Live write | code | One sheet touch, then read-back 0-diff verification |
| S7 | Completion | code | Confidence scoring, labelling, dashboard, Drive sync |
Full stage contracts: skills/tc-team/SKILL.md · internals: docs/ARCHITECTURE.md · why it is shaped this way: write-up — English / 한국어
The gates
| Gate | Catches |
|---|---|
design_gate |
Design that can't be converted into rows |
content_gate |
Abstract, unverifiable phrasing; column whitelist violations |
dup_gate |
Duplicate and logically-negated-duplicate rows |
origin_gate |
Requirements with no anchor in the source spec (fabrication) |
| coverage seal | Rules with no covering row, and unjustified exclusions |
golden_diff |
Any unintended drift against the approved snapshot |
traceability |
Rule ↔ row ledger integrity |
A gate failure stops the run. No gate consults a model.
Confidence scoring — no LLM calls
tc-team/scripts/confidence/ scores each row deterministically (rules R1–R6: spec-confirmation needed, image-only reference, unresolved cross-reference, cross-reference located only, weak anchor, coverage gap — plus R7, a design-technique badge that is displayed but does not move the score). The output tells a reviewer where to spend attention. Because it is pure code, the same input always yields the same score.
The penalties are tuned, not guessed — tc-team/scripts/confidence/sweep.js runs an offline coefficient sweep against your own completed runs so you can see the resulting score distribution before changing anything, and tc-team/test/confidence.test.js locks the tables so a retune cannot silently invert a rule.
🚀 Quick start
Assumes Claude Code is installed.
git clone https://github.com/nobles92ts-ship-it/AI_GAME_QA_TestCase.git
cd AI_GAME_QA_TestCase
bash ./setup.sh
On Windows use .\setup.ps1 instead.
The setup script auto-detects Node.js and the Claude Code CLI, installs agents and skills into ~/.claude/, substitutes every {PROJECT_ROOT} / {NODE_PATH} / {CLAUDE_HOME} / {CONFLUENCE_SITE} placeholder, creates .env and pipeline_config.json from templates, and runs npm install.
Then, in Claude Code, hand it a sheet link and a spec link together:
/tc-team <google-sheets-url> <spec-source>
<spec-source> can be a Confluence URL, or a path to a .pdf, .docx, or .xlsx file.
Your session then drives S0–S7, reporting at each stage and halting on any gate failure. A spec link without a sheet link is rejected rather than guessed at. One feature per run — there is no batch mode.
Full walkthrough: docs/SETUP.md · Dependencies: docs/PREREQUISITES.md
🔧 Customising the rules — and the two linters
Every pipeline rule lives in skills/tc-team/rules/ as a Markdown file. Edit those and the pipeline picks the change up on the next run; there is no build step and no copy to keep in sync.
But editing a rule can silently desynchronise it from the machinery that enforces it. Two linters exist for exactly that moment:
| Linter | Question it answers |
|---|---|
scripts/util/doc_reality_lint.js |
Does every path, script, and agent named in the docs actually exist? |
scripts/util/ssot_drift_check.js |
Has a rule document drifted from the deterministic code that implements it? |
node scripts/util/doc_reality_lint.js
node scripts/util/ssot_drift_check.js
These are not part of the pipeline and do not run automatically. They are maintenance tools: run them after you edit rules, not on every TC run. If you only use the pipeline as shipped, you will never need them.
🧠 Optional — plug in your own knowledge index
Specs reference values they never define — a drop rate that lives in a table doc, a status effect defined on another team's page. The S1 chain can look those up in a knowledge index of your project's own design docs and resolve them instead of guessing: definition found → folded into the design · data-table location cited on the TC · missing spec area discovered → added to the coverage denominator · no evidence → flagged for spec confirmation rather than invented.
This is a socket, not a shipped component: crossref_brain is off by default and the pipeline is 100% identical without it. Turning it on takes three things — your own design docs, a one-time context-mode indexing pass, and two lines in team/tc_config.json. The docs must be your project's (the whole point is testing TCs against the design world they belong to); resemblance to anyone else's wiki is irrelevant.
The better the index, the more the pipeline resolves on its own instead of flagging for humans — see the preparation ladder in PREREQUISITES.
🔁 Migrating from v2
v2 is not deleted — it is pinned. Everything from the v2 era remains permanently available at the v3.1.0 tag.
To stay on v2, pin that tag and stop pulling main:
git checkout v3.1.0
To move to tc-team, note that v4.0.0 has an unrelated commit history, so git pull will fail with "refusing to merge unrelated histories". Re-clone:
git clone https://github.com/nobles92ts-ship-it/AI_GAME_QA_TestCase.git
What changed for you:
| v2 | v4 (tc-team) |
|---|---|
/tc-v2 <sheet> <spec> |
/tc-team <sheet> <spec> |
10 *-v2 agents |
3 tc-team-* agents |
| One skill directory per stage | skills/tc-team/rules/ — 9 rule files |
| Review verdicts decide correctness | Deterministic gates decide; LLM only judges |
tc-대시보드, tc-이미지매칭, and haiku are unchanged and still ship.
🗺 Repository structure
AI_GAME_QA_TestCase/
├── agents/ # 3 tc-team agent definitions
│ ├── tc-team-designer.md # S1 — spec analysis & coverage design
│ ├── tc-team-대조.md # S1 — cross-reference against the knowledge index
│ └── tc-team-설계검수.md # S1 — design inspection gate
│
├── skills/
│ ├── tc-team/
│ │ ├── SKILL.md # S0–S7 stage contracts (entry point)
│ │ └── rules/ # 9 rule files — the SSoT you customise
│ ├── tc-대시보드/ # Dashboard refresh
│ ├── tc-이미지매칭/ # Confluence image → sheet column matching
│ └── haiku/
│
├── tc-team/ # The deterministic engine
│ ├── lib/ # 22 modules — gates, slicer, ledger, impact scope, sheet I/O
│ ├── scripts/ # Chain drivers + confidence scoring
│ ├── test/ # 16 suites
│ └── docs/ # Driver reference, EVAL digest, guides
│
├── scripts/
│ ├── handoff_gate.py # Between-step markdown integrity gate
│ └── util/ # Shared Node utilities + the 2 linters
│ └── expander/ # Design expansion & schema validation
│
├── team/ # Pipeline board + config originals (.example / .template)
├── appscript/ # Google Apps Script (tabs, dashboard, nav sidebar, Slack)
├── docs/ # Setup, prerequisites, architecture
├── commands/ # Slash commands
└── credentials/ # OAuth files (gitignored, .gitkeep only)
🛠 Tech stack
| Layer | Tech |
|---|---|
| Agent runtime | Claude Code CLI |
| Orchestration | Bash + Node.js |
| Input parsers | xlsx · pdf-parse / pdfjs-dist · mammoth · MCP (Confluence ADF) |
| Output | Google Sheets API via googleapis |
| MCP integrations | google-sheets, Atlassian |
🔮 Roadmap
✅ Shipped
- Two-lane pipeline with 7 deterministic gates
- Coverage ledger with explicit, reason-coded exclusions
- LLM-free confidence scoring
- Single-touch sheet write with read-back verification
🔜 Next
- Duplicate-gate threshold tuning against a larger corpus
- Coverage-denominator handling for superseded spec sections
- Spec-change detection and surgical TC update on the tc-team engine
🤖 Built with Claude Code
Every agent definition, orchestration script, rule file, and page of documentation in this project was designed and built using Claude Code.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi