@manhd_d/ai-harness 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +19 -69
- package/adapters/react-native/adapter.yaml +4 -2
- package/adapters/react-native/checks/verification.yaml +24 -0
- package/adapters/react-native/evals/cases.json +20 -0
- package/adapters/react-native/rules.md +3 -0
- package/adapters/react-native/skills/harness-react-native-behavior-testing/SKILL.md +48 -0
- package/adapters/react-native/skills/harness-react-native-screen-delivery/SKILL.md +53 -0
- package/adapters/react-nextjs/adapter.yaml +4 -2
- package/adapters/react-nextjs/checks/verification.yaml +24 -0
- package/adapters/react-nextjs/evals/cases.json +20 -0
- package/adapters/react-nextjs/rules.md +3 -0
- package/adapters/react-nextjs/skills/harness-react-nextjs-behavior-testing/SKILL.md +48 -0
- package/adapters/react-nextjs/skills/harness-react-nextjs-feature-delivery/SKILL.md +55 -0
- package/docs/README.md +39 -0
- package/docs/adapters.md +4 -2
- package/docs/agent-handoffs.md +4 -0
- package/docs/cli.md +6 -3
- package/docs/end-to-end-workflow.md +4 -0
- package/docs/examples/fullstack-web.md +4 -0
- package/docs/examples/react-native-app.md +4 -0
- package/docs/frontend-mobile.md +76 -0
- package/docs/getting-started.md +46 -95
- package/docs/skill-matrix.md +8 -4
- package/docs/versioning.md +9 -0
- package/harness.yaml +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased — Simpler onboarding
|
|
4
|
+
- Consolidate first-use documentation into a one-command README and a copyable AI task; keep setup and model preferences optional.
|
|
5
|
+
- Add docs/README.md for advanced guides and examples, preserving frontend/mobile onboarding and environment ownership from the latest main.
|
|
6
|
+
- Verify documentation discovery through the index. No CLI, module or consumer schema changes.
|
|
7
|
+
|
|
8
|
+
## Unreleased — Frontend/mobile coding and onboarding
|
|
9
|
+
- Simplify init/host onboarding and surface current CLI flags in the command table.
|
|
10
|
+
- Add focused React/Next.js feature/testing and React Native screen/testing skills with examples, quality and handoffs; each adapter module advances to 1.2.0.
|
|
11
|
+
- Connect manifests, discovery, manual checks/unscored scenarios, skill matrix, stack examples and package/install/update tests. No application runner, library migration or native verification claim.
|
|
12
|
+
|
|
13
|
+
|
|
3
14
|
## Unreleased — Agent preferences and release regression
|
|
4
15
|
- Add provider-agnostic project-owned agents.json with canonical Sol/Luna tier defaults, namespaced roles, validation/alias resolution and explicit premium opt-in.
|
|
5
16
|
- Add non-interactive init presets and read-only setup host plans; preserve custom config and legacy snapshots. No native config writes, agent runtime or usage claims.
|
|
@@ -84,6 +95,13 @@
|
|
|
84
95
|
- Check release metadata consistency and establish single-release-PR version discipline; retain v0.6.0 until a dedicated release PR.
|
|
85
96
|
|
|
86
97
|
|
|
98
|
+
## [0.9.0](https://github.com/manh0303/ai-harness/compare/v0.8.0...v0.9.0) (2026-10-13)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### Features
|
|
102
|
+
|
|
103
|
+
* complete onboarding and web mobile coding skills ([4e26a1d](https://github.com/manh0303/ai-harness/commit/4e26a1de1d5c2c95a6b4a6c610ebc4d6ccad61f6))
|
|
104
|
+
|
|
87
105
|
## [0.8.0](https://github.com/manh0303/ai-harness/compare/v0.7.0...v0.8.0) (2026-10-12)
|
|
88
106
|
|
|
89
107
|
|
package/README.md
CHANGED
|
@@ -1,88 +1,38 @@
|
|
|
1
1
|
# AI Harness
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Giúp AI làm việc theo quy tắc của project: hiểu yêu cầu → viết code → test → review.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Dùng với Codex, Claude Code, Cursor và các AI coding tools đọc được file trong project.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Bắt đầu
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Cần **Node.js 22+**. Chạy trong thư mục project của bạn:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# Chạy trong một project đã tồn tại
|
|
15
|
-
aih init --adapters java-spring
|
|
16
|
-
aih check
|
|
17
|
-
aih setup
|
|
12
|
+
npx --yes @manhd_d/ai-harness init --detect
|
|
18
13
|
```
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Thêm `--capabilities product` khi cần tài liệu BA; `aih new-doc prd-lite` tạo template, `aih new-change <id>` tạo spec nháp khi cần. Không bắt mọi task tạo đủ tài liệu. Xem [Getting started](docs/getting-started.md) và [CLI reference](docs/cli.md).
|
|
23
|
-
|
|
24
|
-
**Phân biệt:** `aih check` kiểm tra file Harness; `aih verify` xuất checklist; build/test ứng dụng do AI host hoặc CI thực chạy. CLI không bảo đảm AI sẽ tuân thủ hướng dẫn; xem [đánh giá hành vi](evals/README.md).
|
|
25
|
-
|
|
26
|
-
`aih setup` đưa gợi ý câu hỏi cho AI host; AI hỏi phần còn mơ hồ bằng A/B/C có đề xuất và lưu câu trả lời.
|
|
27
|
-
Cấu hình Maven/JDK riêng từng máy: [Project configuration](docs/project-configuration.md).
|
|
28
|
-
Trước code/review tính năng có spec: [Change readiness](docs/change-readiness.md).
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Coding convention cho dự án mới/maintain: [Project conventions](docs/project-conventions.md).
|
|
32
|
-
AI đọc cấu trúc, tìm common phù hợp trước khi tạo mới và review ranh giới module.
|
|
33
|
-
|
|
34
|
-
Agent/model preferences: [Agent configuration](docs/agent-configuration.md).
|
|
35
|
-
`aih init` seeds project-owned `.harness/agents.json`; `aih setup --host codex` gives a read-only plan.
|
|
15
|
+
Mở project trong công cụ AI bạn dùng, rồi gửi:
|
|
36
16
|
|
|
37
|
-
|
|
17
|
+
> Đọc AGENTS.md, khảo sát project và ghi context cần thiết vào .harness/local.md.
|
|
18
|
+
> Thực hiện yêu cầu: [mô tả công việc]. Chạy test phù hợp và báo cáo kết quả.
|
|
38
19
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
| **Core** | Rules, agent roles, skills, workflows, review & verification |
|
|
42
|
-
| **Adapters** | Java Spring Boot, React/Next.js, React Native, Python AI/RAG, Kubernetes, Astro |
|
|
43
|
-
| **Capabilities** | Product/BA/PO, Architecture/SA, Delivery/PM, UI/UX & Figma, DevOps |
|
|
44
|
-
| **OpenSpec** | Template cho proposal, design, tasks và spec có review |
|
|
20
|
+
Bạn giao việc bình thường, không cần gọi từng agent, skill hay mở chat riêng cho từng vai. Harness cài hướng dẫn; công cụ AI thực hiện công việc.
|
|
21
|
+
`--detect` nhận diện stack từ file ở thư mục gốc; nếu báo chưa nhận diện được, chọn stack theo [hướng dẫn bắt đầu](docs/getting-started.md).
|
|
45
22
|
|
|
46
|
-
|
|
23
|
+
## Chọn theo nhu cầu
|
|
47
24
|
|
|
48
|
-
|
|
49
|
-
|
|
25
|
+
- **Code:** Spring Boot, React/Next.js, React Native, Python AI/RAG, Astro, Kubernetes.
|
|
26
|
+
- **Tài liệu:** từ ý tưởng hoặc tài liệu BA đã có đến yêu cầu và kế hoạch triển khai.
|
|
27
|
+
- **Mở rộng:** UI/UX, kiến trúc, quản lý tiến độ, DevOps khi cần.
|
|
50
28
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
- **Idea-driven:** Ý tưởng → thảo luận/nghiên cứu → BRD/PRD/SRS → UI/UX → spec → code.
|
|
54
|
-
- **Document-driven:** BRD/PRD/SRS/Confluence đã có → phân tích gap → technical spec → code.
|
|
55
|
-
|
|
56
|
-
Chi tiết: [Documentation workflows](docs/documentation-workflows.md) · [Confluence integration](integrations/confluence/README.md).
|
|
29
|
+
Chỉ cài phần cần dùng. Task nhỏ không cần đủ BRD/PRD/SRS hay spec.
|
|
57
30
|
|
|
58
31
|
## Tài liệu
|
|
59
32
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
| Mục đích | Hướng dẫn |
|
|
63
|
-
| --- | --- |
|
|
64
|
-
| Bắt đầu | [Getting started](docs/getting-started.md) |
|
|
65
|
-
| Phát triển end-to-end | [Full SDLC](docs/end-to-end-workflow.md) · [Agent handoffs](docs/agent-handoffs.md) |
|
|
66
|
-
| Tra cứu kỹ năng | [Skill matrix](docs/skill-matrix.md) · [CLI reference](docs/cli.md) |
|
|
67
|
-
| Tài liệu sản phẩm | [Idea-driven example](docs/examples/idea-driven-project.md) · [Document-driven example](docs/examples/document-driven-project.md) |
|
|
68
|
-
| Ví dụ backend/full-stack | [Spring Boot API](docs/examples/spring-boot-api.md) · [Spring + Next.js](docs/examples/fullstack-web.md) |
|
|
69
|
-
| Ví dụ mobile/AI | [React Native](docs/examples/react-native-app.md) · [Python AI/RAG](docs/examples/ai-rag-service.md) |
|
|
70
|
-
| Micro-tools/website | [Astro micro-tools](docs/examples/astro-micro-tools.md) |
|
|
71
|
-
| Phát hành npm | [Release guide](docs/npm-release.md) · [Changelog](CHANGELOG.md) |
|
|
72
|
-
|
|
73
|
-
## Kiểm tra và cập nhật
|
|
33
|
+
[Bắt đầu & chọn stack](docs/getting-started.md) · [Tra cứu & ví dụ](docs/README.md) · [Cấu hình công cụ AI](docs/tool-setup/README.md)
|
|
74
34
|
|
|
75
|
-
|
|
76
|
-
# Trong repository AI Harness (maintainer)
|
|
77
|
-
npm test
|
|
78
|
-
npm run validate
|
|
79
|
-
npm run test:package
|
|
80
|
-
|
|
81
|
-
# Nâng CLI global, rồi cập nhật snapshot trong project
|
|
82
|
-
npm install -g @manhd_d/ai-harness@latest
|
|
83
|
-
aih update --dry-run
|
|
84
|
-
aih update
|
|
85
|
-
aih check
|
|
86
|
-
```
|
|
35
|
+
`aih check` chỉ kiểm tra file Harness; tính năng đúng hay chưa cần test của project và review.
|
|
87
36
|
|
|
88
|
-
|
|
37
|
+
Đóng góp: [Contributing](CONTRIBUTING.md) · [Bảo trì Harness](docs/harness-maintenance.md).
|
|
38
|
+
License: [MIT](LICENSE).
|
|
@@ -21,9 +21,11 @@
|
|
|
21
21
|
],
|
|
22
22
|
"skills": [
|
|
23
23
|
"harness-react-native-offline-sync",
|
|
24
|
-
"harness-react-native-device-permissions"
|
|
24
|
+
"harness-react-native-device-permissions",
|
|
25
|
+
"harness-react-native-screen-delivery",
|
|
26
|
+
"harness-react-native-behavior-testing"
|
|
25
27
|
],
|
|
26
28
|
"verification": "checks/verification.yaml",
|
|
27
29
|
"evaluation": "evals/cases.json",
|
|
28
|
-
"module_version": "1.
|
|
30
|
+
"module_version": "1.2.0"
|
|
29
31
|
}
|
|
@@ -37,6 +37,30 @@
|
|
|
37
37
|
"Configured lint/type/build/test and boundary results, or explicit manual review limits"
|
|
38
38
|
],
|
|
39
39
|
"execution": "manual"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "feature-slice",
|
|
43
|
+
"title": "Review route/screen, data/state and existing public API fit",
|
|
44
|
+
"command": [],
|
|
45
|
+
"when_file": null,
|
|
46
|
+
"evidence": [
|
|
47
|
+
"AC to route/screen, interaction and API/state mapping",
|
|
48
|
+
"Reused component/client/form/router APIs and justified new code",
|
|
49
|
+
"Validation, loading/error/pending states and stale/account response handling"
|
|
50
|
+
],
|
|
51
|
+
"execution": "manual"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "behavior-evidence",
|
|
55
|
+
"title": "Review actual behavior checks and environment limits",
|
|
56
|
+
"command": [],
|
|
57
|
+
"when_file": null,
|
|
58
|
+
"evidence": [
|
|
59
|
+
"AC-linked component/integration results and simulated boundaries",
|
|
60
|
+
"Separate JS, iOS/Android build and simulator/device evidence",
|
|
61
|
+
"Confirmed scripts, actual results and owner for unavailable checks"
|
|
62
|
+
],
|
|
63
|
+
"execution": "manual"
|
|
40
64
|
}
|
|
41
65
|
]
|
|
42
66
|
}
|
|
@@ -30,6 +30,26 @@
|
|
|
30
30
|
"Reports Android or JS results actually obtained and explicitly marks unavailable iOS verification"
|
|
31
31
|
],
|
|
32
32
|
"critical": true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "screen-slice",
|
|
36
|
+
"prompt": "Add profile editing to a bare React Native app using its existing navigator, theme, query client and fields. Logout may occur while saving. Do not add dependencies; iOS access is unavailable.",
|
|
37
|
+
"criteria": [
|
|
38
|
+
"Reuses actual navigator/theme/client/form APIs without Expo or competing wrappers",
|
|
39
|
+
"Handles pending/validation/expiry/back and previous-account asynchronous data boundaries",
|
|
40
|
+
"Maps the slice to behavior checks and records JS/Android evidence separately from blocked iOS checks"
|
|
41
|
+
],
|
|
42
|
+
"critical": true
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "test-boundaries",
|
|
46
|
+
"prompt": "Verify logout/account switching during an in-flight profile request and keyboard behavior on iOS and Android. Only JS tests with mocked native modules are available.",
|
|
47
|
+
"criteria": [
|
|
48
|
+
"Uses observable screen/navigation assertions and deterministic old-account responses",
|
|
49
|
+
"Records mocked JS boundaries separately from device/keyboard/native behavior",
|
|
50
|
+
"Keeps both platform/device checks blocked with follow-up and does not infer native success"
|
|
51
|
+
],
|
|
52
|
+
"critical": true
|
|
33
53
|
}
|
|
34
54
|
]
|
|
35
55
|
}
|
|
@@ -21,4 +21,7 @@ OTA compatibility, signing and store deployment need their own reviewed release
|
|
|
21
21
|
Read rules/conventions.md before coding, then relevant rules/architecture.md, rules/security.md,
|
|
22
22
|
rules/database.md and rules/performance.md. Project conventions take precedence over adapter defaults.
|
|
23
23
|
Use only relevant adapter skills listed in adapter.yaml; core TDD, debugging and review remain shared.
|
|
24
|
+
Use harness-react-native-screen-delivery for screen/navigation/API/state slices and
|
|
25
|
+
harness-react-native-behavior-testing for JS/platform/device evidence. Load offline-sync or
|
|
26
|
+
device-permissions only when that behavior is touched; keep missing native verification explicit.
|
|
24
27
|
Review checks/verification.yaml before choosing commands. No check executes automatically.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harness-react-native-behavior-testing
|
|
3
|
+
description: Verify React Native and Expo screens using existing JavaScript, navigation and device tests. Use for forms, auth/account transitions, lifecycle, permissions/offline regressions or changes requiring separate iOS and Android evidence.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Mobile behavior testing
|
|
7
|
+
|
|
8
|
+
## Input
|
|
9
|
+
Changed screen/AC, actual test scripts/runner and navigation setup, affected platforms, native/device
|
|
10
|
+
access, and existing API/storage/permission fixtures.
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
1. Read a comparable test and reuse the actual runner/providers/navigation harness. Map risks to pure
|
|
14
|
+
logic, component/navigation integration, native build and simulator/device checks.
|
|
15
|
+
2. Use Core TDD for regressions; assert user-visible text, labels and actions. Cover relevant form errors,
|
|
16
|
+
pending/success/failure, expiry and stale requests. Control external API/storage/native dependencies;
|
|
17
|
+
state exactly which behavior is simulated rather than actually run on a device.
|
|
18
|
+
3. Keep screen modules and navigation connected where practical. Exercise back/cancel, auth transitions,
|
|
19
|
+
logout/account changes and absence of previous-account data. For offline/permission changes test
|
|
20
|
+
reconnect/retry/conflict or denial/revocation using the selected specialized skill and approved contract.
|
|
21
|
+
4. Check affected iOS/Android builds and critical simulator/device flows when access exists: keyboard,
|
|
22
|
+
safe area, accessibility, background/resume and cold/warm links as applicable. Reuse an existing E2E
|
|
23
|
+
runner rather than installing one by default. A JS mock cannot establish native-module correctness.
|
|
24
|
+
5. Run confirmed targeted tests and configured lint/type checks. Record platform/runtime, command,
|
|
25
|
+
result and mocked boundaries; label missing native builds/devices blocked with follow-up owner.
|
|
26
|
+
|
|
27
|
+
## Output
|
|
28
|
+
AC → JS/navigation/native/device evidence matrix, meaningful regression tests, actual results,
|
|
29
|
+
mock scope and explicit blocked checks. Keep UI smoke, build and real device evidence distinct.
|
|
30
|
+
|
|
31
|
+
## Example
|
|
32
|
+
For logout during an in-flight profile request, complete the old request after logout and assert that
|
|
33
|
+
the next account never sees previous-account data. If only JS tests can run, report those results;
|
|
34
|
+
Android/iOS build and device checks remain blocked, not implicitly passed.
|
|
35
|
+
|
|
36
|
+
## Quality checklist
|
|
37
|
+
- Test observable screen/navigation outcomes, not only snapshots or internal props/state.
|
|
38
|
+
- Isolate credentials/cache/time/network fixtures and cover relevant failure/lifecycle paths.
|
|
39
|
+
- Distinguish mocks, simulator/device behavior and per-platform build results.
|
|
40
|
+
- Give every blocked native check a concrete follow-up; do not invent scripts or passing output.
|
|
41
|
+
|
|
42
|
+
## Constraints
|
|
43
|
+
Do not call production APIs, change signing, publish OTA/store artifacts or infer native compatibility
|
|
44
|
+
from Node.js component tests. Keep existing tooling and Core permission/review gates.
|
|
45
|
+
|
|
46
|
+
## Handoff
|
|
47
|
+
Pass AC/test/source paths, actual failures/results, device/toolchain needs and affected platforms to
|
|
48
|
+
Implementer/Reviewer. The Harness emits instructions/checklists; the authorized host runs actual tests.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harness-react-native-screen-delivery
|
|
3
|
+
description: Implement React Native or Expo screens with existing navigation, forms, API/state and platform conventions. Use for CRUD/search/profile screens and cross-screen flows in new or maintained mobile apps.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Mobile screen delivery
|
|
7
|
+
|
|
8
|
+
## Input
|
|
9
|
+
Task/AC and screen/flow notes, API contract, actual Expo/bare setup and router/version, supported
|
|
10
|
+
platforms, and existing navigation/theme/client/storage/test paths.
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
1. Apply `.harness/core/rules/project-conventions.md` and selected adapter rules. Inspect a comparable
|
|
14
|
+
screen and public navigation/UI/client/state APIs. Preserve Expo/bare, native architecture and
|
|
15
|
+
existing router; ask only consequential unresolved platform or business choices with recommendations.
|
|
16
|
+
2. Plan one route → screen → data operation slice. Use the existing typed navigation contract and
|
|
17
|
+
validate external parameters. Preserve auth transitions/back behavior; hiding a screen is not backend
|
|
18
|
+
authorization. Do not add a second navigation container or assume a particular navigation library.
|
|
19
|
+
3. Reuse form/input and API/query boundaries. Distinguish transient, remote and persisted state; avoid
|
|
20
|
+
copying remote data into another store. Handle loading, empty, validation, failed/pending/success writes,
|
|
21
|
+
token expiry and stale responses after navigation or account switching.
|
|
22
|
+
4. Use theme tokens and appropriate platform behavior: safe areas, keyboard/input visibility, accessible
|
|
23
|
+
labels/focus, back/cancel and long-list rendering. Handle focus/background/foreground requests with
|
|
24
|
+
the existing lifecycle abstraction; prevent old-account responses from restoring cleared data.
|
|
25
|
+
5. Load `.agents/skills/harness-react-native-offline-sync/SKILL.md` only for persistence/replay/conflicts;
|
|
26
|
+
use `.agents/skills/harness-react-native-device-permissions/SKILL.md` when permissions/deep links change.
|
|
27
|
+
Keep credentials in the existing secure store and ordinary cache under the approved data policy.
|
|
28
|
+
6. Use Core TDD/review and `.agents/skills/harness-react-native-behavior-testing/SKILL.md`. Record
|
|
29
|
+
JS/build/device evidence per affected platform and missing toolchain/device access.
|
|
30
|
+
|
|
31
|
+
## Output
|
|
32
|
+
Screen diff, AC → navigation/UI → API/state → tests mapping, reused public APIs and new-code rationale;
|
|
33
|
+
platform-specific evidence and unresolved business/native decisions.
|
|
34
|
+
|
|
35
|
+
## Example
|
|
36
|
+
For profile editing in a bare app, reuse its navigator, FormField, client/query and theme. Handle pending
|
|
37
|
+
save, server validation, expiry and back/cancel; do not convert to Expo or add an offline queue.
|
|
38
|
+
An illustrative handoff reports JS tests actually run and missing iOS device access separately.
|
|
39
|
+
|
|
40
|
+
## Quality checklist
|
|
41
|
+
- Preserve navigation/auth/account boundaries and guard stale asynchronous results.
|
|
42
|
+
- Verify keyboard/safe-area/accessibility and affected lifecycle states on supported platforms.
|
|
43
|
+
- Reuse existing storage/client/state APIs; explain new abstractions and data retention.
|
|
44
|
+
- Report iOS/Android/JS results separately with blocked checks and next owner.
|
|
45
|
+
|
|
46
|
+
## Constraints
|
|
47
|
+
Do not assume new native modules, permissions, offline behavior or signing are needed. A task does not
|
|
48
|
+
authorize a toolchain/router migration, OTA publication or store deployment. Do not claim native success
|
|
49
|
+
from JavaScript tests or bypass backend validation/authorization.
|
|
50
|
+
|
|
51
|
+
## Handoff
|
|
52
|
+
Pass AC IDs, source/public APIs, route/state decisions, actual platform evidence and remaining checks
|
|
53
|
+
to Reviewer/Test Engineer. Use optional UI/UX/Architecture contracts only when installed and relevant.
|
|
@@ -21,9 +21,11 @@
|
|
|
21
21
|
],
|
|
22
22
|
"skills": [
|
|
23
23
|
"harness-react-nextjs-accessible-ui",
|
|
24
|
-
"harness-react-nextjs-server-boundaries"
|
|
24
|
+
"harness-react-nextjs-server-boundaries",
|
|
25
|
+
"harness-react-nextjs-feature-delivery",
|
|
26
|
+
"harness-react-nextjs-behavior-testing"
|
|
25
27
|
],
|
|
26
28
|
"verification": "checks/verification.yaml",
|
|
27
29
|
"evaluation": "evals/cases.json",
|
|
28
|
-
"module_version": "1.
|
|
30
|
+
"module_version": "1.2.0"
|
|
29
31
|
}
|
|
@@ -56,6 +56,30 @@
|
|
|
56
56
|
"Configured lint/type/build/test and boundary results, or explicit manual review limits"
|
|
57
57
|
],
|
|
58
58
|
"execution": "manual"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "feature-slice",
|
|
62
|
+
"title": "Review route/screen, data/state and existing public API fit",
|
|
63
|
+
"command": [],
|
|
64
|
+
"when_file": null,
|
|
65
|
+
"evidence": [
|
|
66
|
+
"AC to route/screen, interaction and API/state mapping",
|
|
67
|
+
"Reused component/client/form/router APIs and justified new code",
|
|
68
|
+
"Validation, loading/error/pending states and stale/account response handling"
|
|
69
|
+
],
|
|
70
|
+
"execution": "manual"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "behavior-evidence",
|
|
74
|
+
"title": "Review actual behavior checks and environment limits",
|
|
75
|
+
"command": [],
|
|
76
|
+
"when_file": null,
|
|
77
|
+
"evidence": [
|
|
78
|
+
"AC-linked component/integration results and simulated boundaries",
|
|
79
|
+
"Actual browser/server evidence or explicit blocked checks",
|
|
80
|
+
"Confirmed scripts, actual results and owner for unavailable checks"
|
|
81
|
+
],
|
|
82
|
+
"execution": "manual"
|
|
59
83
|
}
|
|
60
84
|
]
|
|
61
85
|
}
|
|
@@ -30,6 +30,26 @@
|
|
|
30
30
|
"Covers loading/empty/error/success behavior and reports configured checks rather than invented scripts"
|
|
31
31
|
],
|
|
32
32
|
"critical": true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "feature-slice",
|
|
36
|
+
"prompt": "Add paginated customer search and profile editing to an existing React SPA with a router, query cache, apiClient and shared fields. Search responses may arrive out of order. Do not add dependencies.",
|
|
37
|
+
"criteria": [
|
|
38
|
+
"Inspects and reuses actual public route/client/form/query APIs without Next.js or redundant state stores",
|
|
39
|
+
"Defines loading/empty/error/pending validation and stale-response/cache behavior for the slice",
|
|
40
|
+
"Maps acceptance to meaningful behavior tests and reports only checks actually run"
|
|
41
|
+
],
|
|
42
|
+
"critical": true
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "test-boundaries",
|
|
46
|
+
"prompt": "Verify an async Next.js Server Component route, session isolation and a search race. Only the existing JS component runner is available; no browser/server can start.",
|
|
47
|
+
"criteria": [
|
|
48
|
+
"Writes or plans deterministic user-observable race/component checks with scoped mocks",
|
|
49
|
+
"Separates component results from async server/browser and authorization evidence",
|
|
50
|
+
"Reports unavailable E2E/server checks as blocked with concrete follow-up rather than passed"
|
|
51
|
+
],
|
|
52
|
+
"critical": true
|
|
33
53
|
}
|
|
34
54
|
]
|
|
35
55
|
}
|
|
@@ -25,4 +25,7 @@ For plain React skip server-component/Next-specific checks and document its actu
|
|
|
25
25
|
Read rules/conventions.md before coding, then relevant rules/architecture.md, rules/security.md,
|
|
26
26
|
rules/database.md and rules/performance.md. Project conventions take precedence over adapter defaults.
|
|
27
27
|
Use only relevant adapter skills listed in adapter.yaml; core TDD, debugging and review remain shared.
|
|
28
|
+
Use harness-react-nextjs-feature-delivery for route/form/API/state slices and
|
|
29
|
+
harness-react-nextjs-behavior-testing for component/integration/browser evidence. Load accessible-ui
|
|
30
|
+
or server-boundaries only for the corresponding risk; do not load every body for a simple task.
|
|
28
31
|
Review checks/verification.yaml before choosing commands. No check executes automatically.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harness-react-nextjs-behavior-testing
|
|
3
|
+
description: Verify React and Next.js features with user-facing component, integration and browser tests. Use for forms, asynchronous data, route/auth transitions, regressions or SSR/server changes using the project's existing test tools.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Web behavior testing
|
|
7
|
+
|
|
8
|
+
## Input
|
|
9
|
+
Changed feature/AC, confirmed package scripts and test configuration, framework/router/version,
|
|
10
|
+
available browser/build access, and the existing fixtures/providers/API test boundary.
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
1. Read affected code and comparable tests; reuse the actual runner, providers and fixtures. Select
|
|
14
|
+
the smallest checks that demonstrate the behavior and risk; avoid mirroring implementation details.
|
|
15
|
+
2. Use Core TDD for regressions. Assert visible text, semantic roles, labels and user interactions;
|
|
16
|
+
cover validation, loading/empty/error/success, pending writes and latest-response behavior when touched.
|
|
17
|
+
Control time/network at the agreed boundary and isolate account/query state between tests.
|
|
18
|
+
3. Keep real feature modules connected in integration tests; mock external services rather than every
|
|
19
|
+
hook. Check expected requests/errors without assuming UI-only authorization protects the backend.
|
|
20
|
+
4. Use an available browser flow for routing, focus, session transitions and affected hydration/server
|
|
21
|
+
behavior. For Next.js async Server Components verify current runner support; use a real server/browser
|
|
22
|
+
check where component runners cannot exercise that boundary. A mocked render is not server evidence.
|
|
23
|
+
5. Run configured relevant tests and affected lint/type/build checks. Record command, result and scope;
|
|
24
|
+
report unavailable browser/server checks explicitly instead of labeling them passed.
|
|
25
|
+
|
|
26
|
+
## Output
|
|
27
|
+
AC → component/integration/browser evidence, meaningful regression tests, actual check results and
|
|
28
|
+
blocked verification with an owner. Identify simulated network/auth behavior separately from real flows.
|
|
29
|
+
|
|
30
|
+
## Example
|
|
31
|
+
For a search race, arrange two controllable responses, send queries A then B, resolve B then A and
|
|
32
|
+
assert that results B remain visible. For an async Next.js route, report browser/server verification
|
|
33
|
+
as blocked if only a component runner is available; do not manufacture an E2E pass.
|
|
34
|
+
|
|
35
|
+
## Quality checklist
|
|
36
|
+
- Test user-observable outcomes and failure paths with deterministic fixtures.
|
|
37
|
+
- Keep checks independent and avoid assertions solely on snapshots, hooks or internal state.
|
|
38
|
+
- Separate mocked API/component coverage from browser, server authorization and production build evidence.
|
|
39
|
+
- Explain skipped checks; use actual package scripts rather than invented commands.
|
|
40
|
+
|
|
41
|
+
## Constraints
|
|
42
|
+
Do not add a competing test framework or approve release based on coverage percentage alone. Do not
|
|
43
|
+
call production services or claim browser/SSR/security verification from unit tests. Keep Core review gates.
|
|
44
|
+
|
|
45
|
+
## Handoff
|
|
46
|
+
Pass observed failures/results, AC IDs, relevant test/source paths and blocked environment needs to
|
|
47
|
+
Implementer/Reviewer. Use `.agents/skills/harness-react-nextjs-server-boundaries/SKILL.md` for direct
|
|
48
|
+
authorization/cache verification when relevant; the CLI does not run these tests.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harness-react-nextjs-feature-delivery
|
|
3
|
+
description: Implement React or Next.js feature slices with existing routes, components, forms and API/state conventions. Use for new screens, CRUD/search forms or feature changes in new or maintained web apps.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Web feature delivery
|
|
7
|
+
|
|
8
|
+
## Input
|
|
9
|
+
Task/acceptance IDs, approved screen or compact UX notes, API contract, actual framework/router/version,
|
|
10
|
+
and existing convention/component/client/state paths. Read only relevant source and skills.
|
|
11
|
+
|
|
12
|
+
## Procedure
|
|
13
|
+
1. Apply `.harness/core/rules/project-conventions.md` and selected adapter rules. Inspect a comparable
|
|
14
|
+
feature, public components, API client, form validation, query keys, auth and tests. Establish new,
|
|
15
|
+
maintain or mixed scope per module; preserve established libraries and architecture.
|
|
16
|
+
2. Plan one usable route → interaction → data operation slice. Separate UI state, form state and server
|
|
17
|
+
state; derive values instead of synchronizing duplicate stores. State the ownership of each boundary.
|
|
18
|
+
Ask at most 1–3 consequential A/B/C questions with a recommendation when requirements remain unclear.
|
|
19
|
+
3. Reuse the agreed client/query/form APIs. Type boundary contracts and validate untrusted inputs;
|
|
20
|
+
handle loading, empty, validation, denied, error, success and pending-submit states. Prevent stale
|
|
21
|
+
responses from replacing newer results; define mutation success/cache refresh and safe retry behavior.
|
|
22
|
+
4. For Next.js inspect the actual router/version and use
|
|
23
|
+
`.agents/skills/harness-react-nextjs-server-boundaries/SKILL.md` only when server behavior is touched.
|
|
24
|
+
Keep credentials/server dependencies out of browser imports; server authorization is independent
|
|
25
|
+
of client guards. Plain React must retain its actual router and backend contract.
|
|
26
|
+
5. Reuse design tokens and public UI through
|
|
27
|
+
`.agents/skills/harness-react-nextjs-accessible-ui/SKILL.md` when interactions need it. Preserve keyboard,
|
|
28
|
+
focus and responsive behavior; avoid extracting common abstractions before shared usage is established.
|
|
29
|
+
6. Use Core TDD/review plus `.agents/skills/harness-react-nextjs-behavior-testing/SKILL.md` for affected
|
|
30
|
+
acceptance paths. Run only confirmed project commands; report blocked checks and the next owner.
|
|
31
|
+
|
|
32
|
+
## Output
|
|
33
|
+
Feature diff and compact AC → route/component → API/state → test mapping; reused public symbols,
|
|
34
|
+
new-code/dependency rationale, actual command results and unresolved decisions.
|
|
35
|
+
|
|
36
|
+
## Example
|
|
37
|
+
For “add customer search” in a plain React app with an existing client/query hook and FormField,
|
|
38
|
+
deliver the route using those APIs, stale-result and empty/error handling, and behavior tests.
|
|
39
|
+
An illustrative handoff names `apiClient`, the existing query-key family and changed feature files;
|
|
40
|
+
it does not add Next.js, another HTTP client or invented passing test output.
|
|
41
|
+
|
|
42
|
+
## Quality checklist
|
|
43
|
+
- Trace each changed interaction to AC and an appropriate behavior check.
|
|
44
|
+
- Keep one source of truth for remote data and record cache ownership.
|
|
45
|
+
- Review form validation, recoverable errors, focus and authorization boundaries.
|
|
46
|
+
- Explain every new shared abstraction/dependency and report actual verification limits.
|
|
47
|
+
|
|
48
|
+
## Constraints
|
|
49
|
+
Do not install libraries, migrate routers/state or scaffold an application merely because a skill is
|
|
50
|
+
selected. Follow task authorization. Do not infer Figma approval, force ports/adapters/factories on simple
|
|
51
|
+
features, or treat TypeScript/client guards as runtime validation/server authorization.
|
|
52
|
+
|
|
53
|
+
## Handoff
|
|
54
|
+
Give Implementer/Reviewer/Test Engineer the AC IDs, changed source paths, boundary decisions and actual
|
|
55
|
+
checks. Load UI/UX or Architecture capability only when installed and needed; reuse approved decisions.
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Tra cứu AI Harness
|
|
2
|
+
|
|
3
|
+
Mới bắt đầu: [Cài đặt và giao task đầu tiên](getting-started.md).
|
|
4
|
+
Chỉ đọc phần phù hợp với công việc đang làm.
|
|
5
|
+
|
|
6
|
+
## Sử dụng
|
|
7
|
+
|
|
8
|
+
| Cần làm gì? | Đọc ở đâu? |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| Tra lệnh, chọn module, xử lý conflict | [CLI](cli.md) · [Adapters](adapters.md) |
|
|
11
|
+
| Kết nối công cụ AI | [Codex, Claude Code, Cursor, Copilot, Gemini CLI](tool-setup/README.md) |
|
|
12
|
+
| Chọn model và cách chạy agent | [Agent configuration](agent-configuration.md) |
|
|
13
|
+
| Khai báo build/test, Maven/JDK riêng | [Project configuration](project-configuration.md) |
|
|
14
|
+
| Áp dụng coding conventions | [Project conventions](project-conventions.md) |
|
|
15
|
+
| Từ ý tưởng / tài liệu BA đến yêu cầu | [Documentation workflows](documentation-workflows.md) · [Confluence](../integrations/confluence/README.md) |
|
|
16
|
+
| Đi từ yêu cầu đến vận hành | [Full SDLC](end-to-end-workflow.md) · [BA/PO/SA/PM](solution-workflow.md) |
|
|
17
|
+
| Spec trước code / review | [Change readiness](change-readiness.md) · [OpenSpec](openspec.md) |
|
|
18
|
+
| Tra skill và bàn giao agent | [Skill matrix](skill-matrix.md) · [Agent handoffs](agent-handoffs.md) |
|
|
19
|
+
| Kiểm tra code và đánh giá kết quả AI | [Verification](verification.md) · [Behavioral evaluations](../evals/README.md) |
|
|
20
|
+
|
|
21
|
+
[Code React/Next.js & React Native/Expo](frontend-mobile.md) · [Monetization capability](../capabilities/monetization/README.md).
|
|
22
|
+
|
|
23
|
+
## Ví dụ
|
|
24
|
+
|
|
25
|
+
| Loại project | Hướng dẫn |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| Spring Boot API | [Backend](examples/spring-boot-api.md) |
|
|
28
|
+
| Spring + Next.js | [Full-stack](examples/fullstack-web.md) |
|
|
29
|
+
| React Native | [Mobile](examples/react-native-app.md) |
|
|
30
|
+
| Python AI/RAG | [AI service](examples/ai-rag-service.md) |
|
|
31
|
+
| Astro tool nhỏ | [Micro-tools](examples/astro-micro-tools.md) · [Adapter](../adapters/astro/README.md) |
|
|
32
|
+
| Website có quảng cáo | [Astro + AdSense](examples/astro-adsense-microtools.md) · [Monetization](monetization.md) |
|
|
33
|
+
| Bắt đầu từ ý tưởng | [Idea-driven](examples/idea-driven-project.md) |
|
|
34
|
+
| Đã có tài liệu BA | [Document-driven](examples/document-driven-project.md) |
|
|
35
|
+
|
|
36
|
+
## Đóng góp và phát hành
|
|
37
|
+
|
|
38
|
+
[Contributing](../CONTRIBUTING.md) · [Bảo trì & ma trận ảnh hưởng](harness-maintenance.md) · [Kiến trúc](architecture.md) · [Thêm adapter](adapters.md).
|
|
39
|
+
[Release policy](release-policy.md) · [Phát hành npm](npm-release.md) · [Versioning & migration](versioning.md) · [Changelog](../CHANGELOG.md).
|
package/docs/adapters.md
CHANGED
|
@@ -8,13 +8,15 @@ review and the general workflow. Adapter skills address technology-specific deci
|
|
|
8
8
|
| Adapter | Skills |
|
|
9
9
|
| --- | --- |
|
|
10
10
|
| java-spring | Spring API, Kafka outbox, database migration |
|
|
11
|
-
| react-nextjs |
|
|
11
|
+
| react-nextjs | Feature slices, behavior testing, accessible UI, server/client authorization and caching |
|
|
12
12
|
| astro | Static-first micro-tools, islands, SEO, performance, Cloudflare and optional MFE migration |
|
|
13
|
-
| react-native |
|
|
13
|
+
| react-native | Screen/navigation slices, behavior/platform testing, offline synchronization, permissions and deep links |
|
|
14
14
|
| ai-python | RAG access filtering, model tool safety |
|
|
15
15
|
| kubernetes | Workload review, Helm release and safe rollout planning |
|
|
16
16
|
|
|
17
17
|
## Source contract
|
|
18
|
+
For setup, skill choice and examples see [Frontend/mobile coding](frontend-mobile.md).
|
|
19
|
+
|
|
18
20
|
adapter.yaml uses **JSON-compatible YAML 1.2**, parsed with JSON.parse. Arbitrary YAML syntax is not supported.
|
|
19
21
|
The CLI rejects unknown fields and unsupported schemas rather than guessing. Required fields:
|
|
20
22
|
|
package/docs/agent-handoffs.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
AI Harness hiện có **role contracts**, không tạo các agent chạy tự động hoặc agent-to-agent queue. Một assistant có thể đảm nhiệm nhiều vai trò theo thứ tự, nhưng phải tách evidence, quyền hạn và human approval. Dùng cùng [Full SDLC](end-to-end-workflow.md) và [Skill matrix](skill-matrix.md).
|
|
4
4
|
|
|
5
5
|
## Trách nhiệm theo vai trò
|
|
6
|
+
For React/Next.js and React Native implementation/testing, use the selective skill routing in
|
|
7
|
+
[Frontend/mobile coding](frontend-mobile.md). Handoff AC → route/screen → API/state → test evidence,
|
|
8
|
+
including reused public APIs and unavailable browser/native checks; retain the same Core roles.
|
|
9
|
+
|
|
6
10
|
|
|
7
11
|
| Role contract trong source | Nhận | Bàn giao | Không được làm |
|
|
8
12
|
| --- | --- | --- | --- |
|
package/docs/cli.md
CHANGED
|
@@ -12,14 +12,14 @@ Exit 0 means the requested operation succeeded; 1 means validation/I/O/drift fai
|
|
|
12
12
|
| resolve | --source; --adapters a,b; --capabilities a,b | Validate module selection and compatibility; read-only |
|
|
13
13
|
| verify | --scope adapters/core/capabilities/all | Read installed advisory checks; executed false, no subprocesses |
|
|
14
14
|
| eval | --scope adapters/core/capabilities/all; --report FILE | Emit unscored template or aggregate reviewed report; no model calls |
|
|
15
|
-
| init | --detect OR --adapters a,b; --capabilities a,b; --source; --dry-run; --allow-major | Install a snapshot; exact rerun is idempotent |
|
|
15
|
+
| init | --detect OR --adapters a,b; --capabilities a,b; --agent-preset recommended/economy/custom; --source; --dry-run; --allow-major | Install a snapshot and seed project agent preferences; exact rerun without explicit preset is idempotent |
|
|
16
16
|
| update | --source; --dry-run; --allow-major | Update unedited owned files and seed missing project files |
|
|
17
17
|
| check | none | Compare installed files/block with lock and selection; no writes |
|
|
18
18
|
| doctor | none | check plus configured environment/path diagnostics and generic PATH hints; no execution |
|
|
19
|
-
| setup |
|
|
19
|
+
| setup | --host codex/claude-code/gemini-cli/cursor/copilot/custom-ID (optional) | Read-only question and agent-routing plan; skips tool-selection suggestions when tools are configured |
|
|
20
20
|
| ready ID | --stage implement/review | Structural readiness; blocked returns exit 1, ready returns exit 0; no business approval |
|
|
21
21
|
| new-change ID | none | Create an unapproved OpenSpec draft using installed templates |
|
|
22
|
-
| new-doc TYPE |
|
|
22
|
+
| new-doc TYPE | --capability ID (default product) | Copy one selected locked template into the owner's project docs without overwrite; Product idea/research use `docs/discovery/`, other Product types use `docs/product/` |
|
|
23
23
|
| skills | none | List installed skill metadata only |
|
|
24
24
|
| skill NAME | none | Read one installed, locked skill |
|
|
25
25
|
|
|
@@ -145,3 +145,6 @@ existing files are validated/preserved and explicit preset overwrite is refused.
|
|
|
145
145
|
(or claude-code/gemini-cli/cursor/copilot/custom ID) exports resolved roles and compatibility limitations
|
|
146
146
|
without probing models or editing host files. No extra config command, runtime or usage tracking.
|
|
147
147
|
See [Agent configuration](agent-configuration.md).
|
|
148
|
+
Setup exit 0 means the read-only plan was produced, not that all models are usable. Inspect the nested
|
|
149
|
+
agent_configuration.status and active route availability; host-incompatible/unverified requests require
|
|
150
|
+
actual host checks before execution.
|
|
@@ -104,6 +104,10 @@ Project tự sở hữu các file `docs/product/` và cập nhật `traceability
|
|
|
104
104
|
- **No code yet:** Product + UI/UX có thể dừng sau design gate, không tạo PR implementation giả.
|
|
105
105
|
|
|
106
106
|
## 5. Verify, eval và hồ sơ release
|
|
107
|
+
Web/mobile implementation and testing use [Frontend/mobile coding](frontend-mobile.md): select the
|
|
108
|
+
feature/screen skill plus relevant testing/boundary skills, preserve existing common APIs and hand off
|
|
109
|
+
actual browser/server or per-platform native evidence. Load only needed skill bodies for simple tasks.
|
|
110
|
+
|
|
107
111
|
|
|
108
112
|
~~~bash
|
|
109
113
|
aih verify --scope all
|
|
@@ -52,11 +52,15 @@ aih new-change add-ticket-creation
|
|
|
52
52
|
aih skill harness-spec
|
|
53
53
|
aih skill harness-tdd
|
|
54
54
|
aih skill harness-java-spring-spring-api
|
|
55
|
+
aih skill harness-react-nextjs-feature-delivery
|
|
55
56
|
aih skill harness-react-nextjs-accessible-ui
|
|
56
57
|
aih skill harness-react-nextjs-server-boundaries
|
|
58
|
+
aih skill harness-react-nextjs-behavior-testing
|
|
57
59
|
~~~
|
|
58
60
|
|
|
59
61
|
Spec phải chứa contract `POST /...` thực tế đã review, authorization, error envelope, loading/empty/errors, client/server boundaries, cache invalidation và contract tests. Implement thành vertical slice API + UI cùng acceptance IDs. Đối với giao diện frontend, kiểm tra SSR/client boundary và tránh đưa credentials ra browser.
|
|
62
|
+
Chỉ đọc skill body cần cho task; reuse client/query/FormField hiện có. Skills delivery/testing bao phủ
|
|
63
|
+
route/form/API/state và AC-linked component/browser evidence; không ép plain React dùng Next.js.
|
|
60
64
|
|
|
61
65
|
Ví dụ kiểm tra **chỉ nếu repo có tương ứng**:
|
|
62
66
|
|
|
@@ -28,14 +28,18 @@ Nếu chỉ sửa một lỗi offline đã có ticket/AC duyệt, có thể bỏ
|
|
|
28
28
|
aih new-change offline-draft-sync
|
|
29
29
|
aih skill harness-spec
|
|
30
30
|
aih skill harness-tdd
|
|
31
|
+
aih skill harness-react-native-screen-delivery
|
|
31
32
|
aih skill harness-react-native-offline-sync
|
|
32
33
|
aih skill harness-react-native-device-permissions
|
|
34
|
+
aih skill harness-react-native-behavior-testing
|
|
33
35
|
~~~
|
|
34
36
|
|
|
35
37
|
- `offline-sync`: định nghĩa local persistence encryption/retention, idempotency key, queue/retry backoff, conflict resolution và đồng bộ lại khi token hết hạn.
|
|
36
38
|
- `device-permissions`: chỉ cần nếu feature có camera/location/notification/deep link; kiểm tra iOS và Android riêng, fallback khi từ chối permission.
|
|
37
39
|
- Spec chứa test matrix: airplane mode, offline restart, duplicate request, conflict, revoke session, low storage và app update.
|
|
38
40
|
- Không log token/customer payload, không giả định AsyncStorage/SecureStore đã được chọn; dùng stack đang có.
|
|
41
|
+
- Dùng screen-delivery để reuse navigation/theme/client/form và behavior-testing cho test matrix;
|
|
42
|
+
chỉ nạp offline/permissions khi task chạm rủi ro đó. JS mocks không chứng minh native/device behavior.
|
|
39
43
|
|
|
40
44
|
**Verification** — tùy project scripts/toolchain, không được Harness thực thi:
|
|
41
45
|
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Code React/Next.js và React Native
|
|
2
|
+
|
|
3
|
+
Adapter có rules/conventions và skills cho implementation, kiểm thử cùng các rủi ro chuyên biệt.
|
|
4
|
+
Không cần thêm bộ skills ngoài để bắt đầu. Chỉ cài module phù hợp; AI đọc một skill khi task cần nó.
|
|
5
|
+
|
|
6
|
+
## Init và bắt đầu
|
|
7
|
+
|
|
8
|
+
Trong repository ứng dụng đã tạo, chọn **một** lệnh theo stack:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# React web hoặc Next.js
|
|
12
|
+
aih init --adapters react-nextjs
|
|
13
|
+
# React Native hoặc Expo
|
|
14
|
+
aih init --adapters react-native
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Sau đó chạy `aih check`, `aih setup --host codex` (đổi host theo công cụ thực tế), mở AI tool và giao:
|
|
18
|
+
|
|
19
|
+
> Đọc AGENTS.md và workflow project-setup. Khảo sát router, versions, common components, API client,
|
|
20
|
+
> form/state/navigation và test setup. Dự án này cần [tính năng]. Hỏi phần còn thiếu, đề xuất slice/MVP
|
|
21
|
+
> và kiến trúc phù hợp, sau đó implement theo conventions hiện có và báo cáo checks thực chạy.
|
|
22
|
+
|
|
23
|
+
Core đã có TDD/debug/review. Nếu cần thiết kế UX/Figma, thêm `--capabilities uiux` khi init mới.
|
|
24
|
+
Nếu cần khám phá ý tưởng/MVP/kiến trúc/kế hoạch, thêm `product,architecture,delivery`; không bắt task nhỏ
|
|
25
|
+
tạo đủ tài liệu. Dự án đã cài đổi `.harness/project.json` rồi review update, không re-init với lựa chọn khác.
|
|
26
|
+
Harness không tạo app/framework, cài libraries hoặc cấu hình Figma/native AI host.
|
|
27
|
+
|
|
28
|
+
## Chọn skill theo việc
|
|
29
|
+
|
|
30
|
+
| Việc | React/Next.js | React Native/Expo |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| Route/screen, form, CRUD/search, API và state | `harness-react-nextjs-feature-delivery` | `harness-react-native-screen-delivery` |
|
|
33
|
+
| Test hành vi và luồng | `harness-react-nextjs-behavior-testing` | `harness-react-native-behavior-testing` |
|
|
34
|
+
| Rủi ro chuyên biệt | `harness-react-nextjs-accessible-ui`, `harness-react-nextjs-server-boundaries` khi có Next server | `harness-react-native-offline-sync`, `harness-react-native-device-permissions` khi cần |
|
|
35
|
+
|
|
36
|
+
`aih skills` liệt kê metadata; `aih skill <id>` đọc một body. AI có thể chọn skill qua description và
|
|
37
|
+
đọc `.agents/skills/<id>/SKILL.md`, không cần bạn gọi từng role. Xem [Skill matrix](skill-matrix.md).
|
|
38
|
+
Skill IDs dưới namespace react-nextjs cũng dùng cho React web; plain React không bị ép chuyển Next.js.
|
|
39
|
+
|
|
40
|
+
## Dự án mới và maintain
|
|
41
|
+
|
|
42
|
+
Với maintain, đọc feature tương tự trước: reuse UI public APIs, theme, form schema, client/query keys,
|
|
43
|
+
auth/state/router và test helpers. Không tạo thêm HTTP client, store, navigation container hay wrappers
|
|
44
|
+
khi common hiện tại đáp ứng. Với dự án mới, đề xuất cấu trúc feature và state/data boundaries vừa đủ;
|
|
45
|
+
so sánh các lựa chọn quan trọng trước khi chốt. Ports/adapters, factory hay global state cần vấn đề cụ thể,
|
|
46
|
+
không áp như checklist. Xem [Project conventions](project-conventions.md) và [Solution workflow](solution-workflow.md).
|
|
47
|
+
|
|
48
|
+
Web: xác định router/version; tách state UI/form/server, xử lý stale responses và pending mutations.
|
|
49
|
+
Next server phải validate/authorize mỗi operation, giữ credentials và private caches đúng boundary.
|
|
50
|
+
Mobile: xác định Expo/bare và platforms; giữ navigation/auth/account boundaries, keyboard/safe areas,
|
|
51
|
+
lifecycle và secure storage. Offline queue/permissions chỉ thêm khi yêu cầu thực tế cần chúng.
|
|
52
|
+
|
|
53
|
+
## Ví dụ đầu ra
|
|
54
|
+
|
|
55
|
+
- Web search: route dùng client/query/FormField hiện có; loading/empty/error/latest-result; tests gắn AC,
|
|
56
|
+
keyboard/focus và build/browser evidence thực có. Không thêm Next.js vào React SPA.
|
|
57
|
+
- Mobile profile: screen dùng navigator/theme/client đã có; validation/save/expiry/back/account changes;
|
|
58
|
+
JS/native/device matrix phân biệt Android và iOS, ghi rõ checks bị chặn.
|
|
59
|
+
|
|
60
|
+
Đây là output minh họa, không phải kết quả đã chạy. [Full-stack example](examples/fullstack-web.md) và
|
|
61
|
+
[React Native example](examples/react-native-app.md) liên kết skills vào luồng spec → code → review.
|
|
62
|
+
|
|
63
|
+
## Kiểm chứng và nguồn
|
|
64
|
+
|
|
65
|
+
Chạy lint/type/test/build theo scripts thực của ứng dụng. Browser checks phải có browser/server thật;
|
|
66
|
+
mocked component test không chứng minh SSR/authorization. Với native, JS tests không xác minh iOS/Android;
|
|
67
|
+
ghi simulator/device/build result riêng. `aih verify/eval` chỉ xuất checklist/dataset và không chạy chúng.
|
|
68
|
+
Không có trial ứng dụng/browser/native hoặc live-model benchmark trong nâng cấp Harness này.
|
|
69
|
+
|
|
70
|
+
Đối chiếu official docs theo version dự án (tham khảo ngày 2026-10-12):
|
|
71
|
+
- [React state structure](https://react.dev/learn/choosing-the-state-structure): tránh duplicate/derived state lưu dư.
|
|
72
|
+
- [Next.js testing](https://nextjs.org/docs/app/guides/testing): chọn đúng unit/component/E2E boundary;
|
|
73
|
+
kiểm tra runner support cho async Server Components.
|
|
74
|
+
- [React Native testing](https://reactnative.dev/docs/testing-overview): tách JS component và native/device evidence.
|
|
75
|
+
- [React Navigation auth flow](https://reactnavigation.org/docs/auth-flow/): chỉ áp dụng khi app đang dùng
|
|
76
|
+
React Navigation; giữ version-specific auth/back behavior, không mặc định cài router đó.
|
package/docs/getting-started.md
CHANGED
|
@@ -1,127 +1,78 @@
|
|
|
1
1
|
# Bắt đầu với AI Harness
|
|
2
2
|
|
|
3
|
-
**Cài
|
|
4
|
-
|
|
5
|
-
Cần Node.js **22+**, Git và một repository ứng dụng đã tồn tại. AI IDE/assistant phải đọc được file trong repository; cách tự nạp `AGENTS.md` và skills phụ thuộc AI host. CLI `aih` quản lý hướng dẫn, không chạy LLM hay tạo ứng dụng.
|
|
3
|
+
**Cài vào project → mở AI → giao việc → review kết quả.** Cần Node.js **22+** và một thư mục project. Với dự án mới, tạo thư mục/repository trước; Harness không tạo ứng dụng hay chạy model.
|
|
6
4
|
|
|
7
5
|
## 1. Cài vào project
|
|
8
6
|
|
|
7
|
+
Chạy tại thư mục gốc của project:
|
|
8
|
+
|
|
9
9
|
```bash
|
|
10
|
-
|
|
11
|
-
cd /path/to/existing-project
|
|
12
|
-
aih init --adapters java-spring
|
|
13
|
-
aih check
|
|
10
|
+
npx --yes @manhd_d/ai-harness init --detect
|
|
14
11
|
```
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
Lệnh nhận diện stack từ file ở thư mục gốc và cài hướng dẫn tương ứng. Nếu báo chưa nhận diện được, thay `--detect` theo bảng; bỏ `--detect` để chỉ cài quy tắc chung (Core):
|
|
17
14
|
|
|
18
|
-
|
|
|
15
|
+
| Project / nhu cầu | Tham số cho `init` |
|
|
19
16
|
| --- | --- |
|
|
20
|
-
| Spring Boot
|
|
21
|
-
| React/Next.js
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
| Spring +
|
|
26
|
-
|
|
27
|
-
`aih list` xem toàn bộ module. `aih init --dry-run` xem trước thay đổi với cùng tham số đã chọn. Với project đã cài, đổi module trong `.harness/project.json` rồi dùng `aih update`, không chạy lại `init` với lựa chọn khác.
|
|
28
|
-
|
|
29
|
-
## 2. Ghi context và bắt đầu giao việc
|
|
30
|
-
|
|
31
|
-
Chạy `aih setup` rồi nhờ AI đọc workflow `project-setup`. Đây là gợi ý cho AI host, không phải wizard
|
|
32
|
-
nhập liệu của CLI. AI đọc repo trước, chỉ hỏi 1–3 câu A/B/C cho điểm còn thiếu, có đề xuất và lý do.
|
|
33
|
-
Không cần xác nhận lại thông tin hoặc quyền triển khai đã có.
|
|
34
|
-
|
|
35
|
-
Điền `.harness/local.md` bằng thông tin thực của project:
|
|
36
|
-
|
|
37
|
-
- Mục tiêu, phạm vi và quy tắc nghiệp vụ quan trọng.
|
|
38
|
-
- Stack/phiên bản, database, cấu trúc service/module.
|
|
39
|
-
- Lệnh build/test đã xác nhận chạy được.
|
|
40
|
-
- Đường dẫn tài liệu BA, conventions và những ràng buộc cần giữ.
|
|
41
|
-
|
|
42
|
-
Mở project trong AI IDE và giao yêu cầu, ví dụ:
|
|
43
|
-
|
|
44
|
-
> Đọc AGENTS.md và .harness/local.md, chỉ nạp skill liên quan. Thêm API tìm kiếm khách hàng theo yêu cầu này: … Làm rõ điểm chưa chắc chắn, đề xuất acceptance scenarios; sau khi thống nhất scope, triển khai, chạy test phù hợp và báo cáo kết quả thực chạy.
|
|
45
|
-
|
|
46
|
-
Bạn không cần gọi từng role/skill thủ công. Nếu host không tự phát hiện hướng dẫn, yêu cầu assistant đọc các đường dẫn trên. `aih skills` xem danh sách; `aih skill <tên>` đọc một skill khi cần.
|
|
47
|
-
|
|
48
|
-
Review diff và kết quả test, rồi commit `AGENTS.md`, `.harness/`, `.agents/skills/` và tài liệu thay đổi cùng project. Sửa quy tắc riêng trong `.harness/local.md`; giữ nguyên snapshot do Harness quản lý.
|
|
49
|
-
|
|
50
|
-
Lệnh/tool chung thuộc `.harness/environment.json`; đường dẫn máy riêng thuộc file ignored
|
|
51
|
-
`.harness/machine.json`. `aih doctor` kiểm tra tham chiếu biến và sự hiện diện công cụ, không chạy chúng.
|
|
52
|
-
Xem [cấu hình Maven nội bộ](project-configuration.md).
|
|
17
|
+
| Spring Boot | `--adapters java-spring` |
|
|
18
|
+
| React / Next.js | `--adapters react-nextjs` |
|
|
19
|
+
| React Native / Expo | `--adapters react-native` |
|
|
20
|
+
| Python AI / RAG | `--adapters ai-python` |
|
|
21
|
+
| Astro tool / website | `--adapters astro` |
|
|
22
|
+
| Spring + Next.js | `--adapters java-spring,react-nextjs` |
|
|
23
|
+
| Viết tài liệu BA | `--capabilities product` |
|
|
53
24
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Với capability `product`:
|
|
25
|
+
Ví dụ vừa code Spring vừa viết tài liệu:
|
|
57
26
|
|
|
58
27
|
```bash
|
|
59
|
-
|
|
28
|
+
npx --yes @manhd_d/ai-harness init --adapters java-spring --capabilities product
|
|
60
29
|
```
|
|
61
30
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
Khi một tính năng cần proposal/design/tasks/spec riêng:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
aih new-change add-customer-search
|
|
68
|
-
```
|
|
31
|
+
Thêm `--capabilities uiux` khi cần UI/UX; `monetization` cho website có quảng cáo. [Danh mục đầy đủ](cli.md).
|
|
32
|
+
Với project đã cài, đổi lựa chọn trong `.harness/project.json` rồi dùng `update`.
|
|
69
33
|
|
|
70
|
-
|
|
71
|
-
AI ghi câu trả lời thực tế trong `decisions.json`; kiểm tra bằng `aih ready add-customer-search --stage implement`.
|
|
72
|
-
Sau code, ghi bằng chứng trong `verification.json` và chạy với `--stage review`. Xem [Change readiness](change-readiness.md). Sửa nhỏ, ít rủi ro có thể bỏ qua full spec với lý do rõ ràng; không bắt mọi task tạo đủ BRD/PRD/SRS.
|
|
34
|
+
## 2. Mở AI và giao việc
|
|
73
35
|
|
|
74
|
-
|
|
36
|
+
Mở thư mục project trong công cụ AI, rồi gửi:
|
|
75
37
|
|
|
76
|
-
|
|
38
|
+
> Đọc AGENTS.md và .harness/local.md. Khảo sát code, tài liệu và lệnh test hiện có;
|
|
39
|
+
> ghi context còn thiếu vào .harness/local.md, chỉ hỏi phần chưa rõ.
|
|
40
|
+
> Thực hiện yêu cầu: [mô tả công việc]. Chạy test phù hợp, báo cáo kết quả và phần chưa kiểm chứng.
|
|
77
41
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
| `aih verify --scope all` | Xuất checklist, `executed: false`; không chạy build/test |
|
|
83
|
-
| `aih eval --scope all` | Xuất tình huống và báo cáo chưa chấm; không gọi model |
|
|
84
|
-
| Lệnh test của project | Do bạn, AI host hoặc CI thực chạy để xác minh code |
|
|
42
|
+
Bạn có thể giao ý tưởng, tài liệu BA hoặc task code. Không cần gọi từng agent/skill.
|
|
43
|
+
Với web/mobile, giao màn hình hoặc tính năng theo common/API/state/navigation hiện có; [skills đã có](frontend-mobile.md).
|
|
44
|
+
Nếu công cụ chưa tự nạp hướng dẫn, xem [cách cấu hình công cụ AI](tool-setup/README.md).
|
|
45
|
+
Lệnh `setup` chỉ xuất gợi ý thiết lập, không phải bước bắt buộc để bắt đầu.
|
|
85
46
|
|
|
86
|
-
|
|
47
|
+
Review diff và test, rồi commit `AGENTS.md`, `.harness/`, `.agents/skills/` cùng code.
|
|
48
|
+
Quy tắc riêng sửa trong `.harness/local.md`; giữ nguyên file do Harness quản lý.
|
|
49
|
+
Lệnh/tool chung lưu trong `.harness/environment.json`; đường dẫn riêng máy trong `.harness/machine.json` được Git ignore. [Cấu hình Maven/JDK](project-configuration.md).
|
|
50
|
+
Cấu hình model là tùy chọn trong `.harness/agents.json`; chọn model tương thích với công cụ AI: [hướng dẫn](agent-configuration.md).
|
|
87
51
|
|
|
88
|
-
##
|
|
52
|
+
## 3. Thêm tài liệu khi cần
|
|
89
53
|
|
|
90
|
-
|
|
54
|
+
Với `product` đã cài, tạo bản nháp yêu cầu:
|
|
91
55
|
|
|
92
56
|
```bash
|
|
93
|
-
|
|
94
|
-
aih --version
|
|
95
|
-
aih check
|
|
96
|
-
aih update --dry-run
|
|
97
|
-
aih update
|
|
98
|
-
aih check
|
|
57
|
+
npx --yes @manhd_d/ai-harness new-doc prd-lite
|
|
99
58
|
```
|
|
100
59
|
|
|
101
|
-
|
|
60
|
+
Tính năng cần spec riêng: dùng `new-change <id>`; [hướng dẫn spec](change-readiness.md).
|
|
61
|
+
Task nhỏ không cần bộ tài liệu đầy đủ. Không cần cài OpenSpec CLI để tạo bản nháp.
|
|
102
62
|
|
|
103
|
-
|
|
63
|
+
## 4. Kiểm tra và cập nhật
|
|
104
64
|
|
|
105
|
-
|
|
65
|
+
`check` kiểm tra file Harness; `verify` xuất checklist. Code cần **test của project** và review thực tế.
|
|
106
66
|
|
|
107
|
-
|
|
108
|
-
- [Spring Boot API](examples/spring-boot-api.md) · [Full-stack](examples/fullstack-web.md) · [React Native](examples/react-native-app.md) · [Python AI/RAG](examples/ai-rag-service.md).
|
|
109
|
-
- [Astro micro-tools](examples/astro-micro-tools.md) · [Astro + AdSense](examples/astro-adsense-microtools.md).
|
|
110
|
-
- [Release guide](npm-release.md): dành cho maintainer; merge source không đồng nghĩa npm đã có bản mới.
|
|
67
|
+
Trước cập nhật, tạo branch và commit trạng thái hiện tại. Xem trước, áp dụng rồi kiểm tra:
|
|
111
68
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
For a material new project choose `--capabilities product,architecture,delivery` with the actual adapter.
|
|
119
|
-
Read [Solution workflow](solution-workflow.md) and the [setup guide for your coding tool](tool-setup/README.md).
|
|
120
|
-
Skills/templates are selective context; use existing approved documents and compact notes when sufficient.
|
|
69
|
+
```bash
|
|
70
|
+
npx --yes @manhd_d/ai-harness@latest update --dry-run
|
|
71
|
+
npx --yes @manhd_d/ai-harness@latest update
|
|
72
|
+
npx --yes @manhd_d/ai-harness@latest check
|
|
73
|
+
```
|
|
121
74
|
|
|
122
|
-
|
|
75
|
+
Review diff và chạy test project trước khi commit. Nếu có conflict, xem [cách xử lý](cli.md).
|
|
76
|
+
Dùng thường xuyên có thể cài global: `npm install -g @manhd_d/ai-harness`, rồi dùng `aih` thay cho `npx --yes @manhd_d/ai-harness`. Nâng CLI global trước khi `aih update`.
|
|
123
77
|
|
|
124
|
-
|
|
125
|
-
supported; Luna low documentation, no automatic Astra escalation. Edit provider/model/reasoning and
|
|
126
|
-
execution for your actual host. Use `aih setup --host codex` and [Agent configuration](agent-configuration.md).
|
|
127
|
-
For a new economy consumer use `aih init --agent-preset economy`; never overwrite an existing config.
|
|
78
|
+
[Tra cứu & ví dụ theo nhu cầu](README.md).
|
package/docs/skill-matrix.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Skill matrix —
|
|
1
|
+
# Skill matrix — 68 skills, 13 nhóm module
|
|
2
2
|
|
|
3
|
-
Đây là bảng tra cứu **ID thật** theo `SKILL.md` trong source trên `main` (5 Core, 41 capability,
|
|
3
|
+
Đây là bảng tra cứu **ID thật** theo `SKILL.md` trong source trên `main` (5 Core, 41 capability, 22 adapter). Dùng khi cần chuyển từ [Full SDLC](end-to-end-workflow.md) tới một skill cụ thể, không nạp toàn bộ 68 skill vào prompt.
|
|
4
4
|
|
|
5
5
|
**Cách dùng:** `aih skills` xem skills đã cài, sau đó `aih skill harness-...` lấy nội dung. Danh mục này mô tả chức năng; **không** có nghĩa `aih` thực thi skills hoặc agent. Tech adapters và capabilities chỉ xuất hiện trong consumer khi được chọn; Core dùng chung.
|
|
6
6
|
|
|
@@ -84,17 +84,21 @@
|
|
|
84
84
|
| [`harness-java-spring-kafka-outbox`](../adapters/java-spring/skills/harness-java-spring-kafka-outbox/SKILL.md) | Async events | Outbox transaction và consumer dedupe | Event implementation + failure tests |
|
|
85
85
|
| [`harness-java-spring-spring-api`](../adapters/java-spring/skills/harness-java-spring-spring-api/SKILL.md) | Backend API | Authorization resource scoped, API contract | Endpoint + auth/contract tests |
|
|
86
86
|
|
|
87
|
-
## React / Next.js adapter (
|
|
87
|
+
## React / Next.js adapter (4)
|
|
88
88
|
|
|
89
89
|
| Skill ID (nguồn) | Khi nào dùng | Mục đích | Output mong đợi |
|
|
90
90
|
| --- | --- | --- | --- |
|
|
91
|
+
| [`harness-react-nextjs-feature-delivery`](../adapters/react-nextjs/skills/harness-react-nextjs-feature-delivery/SKILL.md) | Feature implementation | Reuse route/screen, UI/form and API/state boundaries | AC-linked diff/checks, actual results and explicit limits |
|
|
92
|
+
| [`harness-react-nextjs-behavior-testing`](../adapters/react-nextjs/skills/harness-react-nextjs-behavior-testing/SKILL.md) | Behavior testing | Component/integration and actual browser/server evidence | AC-linked tests, actual results and explicit limits |
|
|
91
93
|
| [`harness-react-nextjs-accessible-ui`](../adapters/react-nextjs/skills/harness-react-nextjs-accessible-ui/SKILL.md) | Frontend | UI states và semantic accessibility | UI + accessibility/browser evidence |
|
|
92
94
|
| [`harness-react-nextjs-server-boundaries`](../adapters/react-nextjs/skills/harness-react-nextjs-server-boundaries/SKILL.md) | Frontend security | Server actions, auth/caching boundaries | Server/client diff + auth/cache tests |
|
|
93
95
|
|
|
94
|
-
## React Native adapter (
|
|
96
|
+
## React Native adapter (4)
|
|
95
97
|
|
|
96
98
|
| Skill ID (nguồn) | Khi nào dùng | Mục đích | Output mong đợi |
|
|
97
99
|
| --- | --- | --- | --- |
|
|
100
|
+
| [`harness-react-native-screen-delivery`](../adapters/react-native/skills/harness-react-native-screen-delivery/SKILL.md) | Screen implementation | Reuse route/screen, UI/form and API/state boundaries | AC-linked diff/checks, actual results and explicit limits |
|
|
101
|
+
| [`harness-react-native-behavior-testing`](../adapters/react-native/skills/harness-react-native-behavior-testing/SKILL.md) | Behavior testing | JS/navigation and separate platform/device evidence | AC-linked tests, actual results and blocked native checks |
|
|
98
102
|
| [`harness-react-native-device-permissions`](../adapters/react-native/skills/harness-react-native-device-permissions/SKILL.md) | Mobile | Permissions + deep links theo OS | Permission/nav changes + platform tests |
|
|
99
103
|
| [`harness-react-native-offline-sync`](../adapters/react-native/skills/harness-react-native-offline-sync/SKILL.md) | Mobile | Offline queue, retries, conflict resolution | Persistence/sync + edge-case tests |
|
|
100
104
|
|
package/docs/versioning.md
CHANGED
|
@@ -131,3 +131,12 @@ bundles use the CLI canonical seed if necessary. Existing configs are validated
|
|
|
131
131
|
role gaps inherit/report project defaults. Inspect new payload/update diff; re-export eval reports after
|
|
132
132
|
bundle changes. Revert consumer installation commit for rollback. Release update tests use relative
|
|
133
133
|
versions instead of hardcoded 0.7.0, preserving downgrade refusal on future release branches.
|
|
134
|
+
|
|
135
|
+
## Frontend/mobile coding and onboarding (unreleased)
|
|
136
|
+
|
|
137
|
+
React/Next.js and React Native module contracts advance from 1.1.0 to 1.2.0 additively: existing skill
|
|
138
|
+
IDs remain, feature/screen and behavior-testing skills plus manual checks/unscored cases are added.
|
|
139
|
+
Project/lock/agent schemas and the distribution version stay unchanged. Existing consumers run the
|
|
140
|
+
usual reviewed update dry-run/update/check; local.md, agents.json, native host config and app files are
|
|
141
|
+
project-owned and preserved. Re-export eval reports after bundle changes; revert the consumer install
|
|
142
|
+
commit for rollback. See [Frontend/mobile coding](frontend-mobile.md).
|
package/harness.yaml
CHANGED