Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
b1f1bb5
upgraded to react-native 0.81.4
cakesoft-vaibhav Apr 22, 2026
5a290fd
wip: Enable new architecture
cakesoft-vaibhav Apr 23, 2026
f90419e
ios patched
cakesoft-vaibhav Apr 23, 2026
44480ee
Upgraded to react native 0.81.4
cakesoft-vaibhav Apr 28, 2026
58c085d
feat: upgrade react native 0.81.4 -> 0.83.9
cakesoft-vaibhav Apr 28, 2026
dfde724
feat: replaced react-native-document-picker with react-native-documen…
cakesoft-vaibhav Apr 28, 2026
5108ba4
feat: upgraded contacts and modal package and removed older patches
cakesoft-vaibhav Apr 29, 2026
1d86edf
feat: upgraded react-native-blob-util react-native-html-to-pdf react-…
cakesoft-vaibhav Apr 29, 2026
cac3bc7
feat: upgraded react-native-tcp-socket and removed stale patch
cakesoft-vaibhav Apr 29, 2026
b2e9efa
feat: upgrade RealmJS to 12.15.0 and update related dependencies
cakesoft-vaibhav Apr 30, 2026
a79f2d4
feat: Sentry implementation update
cakesoft-vaibhav Apr 30, 2026
ec0e8c0
fix: wallet selection in send flow
cakesoft-vaibhav Apr 30, 2026
cffebe0
fix: Icon consuming touch on ios
cakesoft-vaibhav Apr 30, 2026
562be89
fix: iOS overflow ui issues
cakesoft-vaibhav Apr 30, 2026
24482af
fix: Crash on hot reload on ios
cakesoft-vaibhav Apr 30, 2026
aabc32e
build 2.5.11(592)
cakesoft-vaibhav May 4, 2026
f99619e
fix: Recovery key history not populating
cakesoft-vaibhav May 4, 2026
6fdfece
fix: Commented info modal secondary cta to create ticket
cakesoft-vaibhav May 5, 2026
2976a43
fix: Receive screen missing text
cakesoft-vaibhav May 5, 2026
6a8a620
fix: Assisted Server Backup toggle
cakesoft-vaibhav May 5, 2026
0bbb8a8
fix: enter seed screen input error and suggestion position mismatch
cakesoft-vaibhav May 5, 2026
e20776a
fix: Android setLayoutAnimationEnabledExperimental warning
cakesoft-vaibhav May 5, 2026
6075510
fix: added download info in pdf preview screen
cakesoft-vaibhav May 5, 2026
ba2b656
fix: ColdCard signing issue
cakesoft-vaibhav May 5, 2026
0394dac
build 593
cakesoft-vaibhav May 6, 2026
dba073a
fix: hide empty illustration for node/wallet/signers
cakesoft-vaibhav May 6, 2026
02ae0f4
fix: streamline seed word handling in EnterSeedScreen and bhr reducer
cakesoft-vaibhav May 6, 2026
8f20220
fix: iOS app crash on Coldcard vault register from receive screen due…
cakesoft-vaibhav May 6, 2026
abe4a16
adds(SDD support): openspec as dev dependecy
Parsh May 6, 2026
78d7cde
adds: skills and prompts for OpenSpec workflow
Parsh May 6, 2026
8797fc4
adds: initial OpenSpec configuration file; injects project-specific c…
Parsh May 6, 2026
7b6ec4b
build 594
cakesoft-vaibhav May 6, 2026
5461a20
adds: change-engineer agent for OpenSpec workflow management
Parsh May 6, 2026
e5d5182
fix: Node version for gh action test
cakesoft-vaibhav May 7, 2026
1f4a995
feat: add mock implementations for picker, realm, and mmkv modules
cakesoft-vaibhav May 7, 2026
8805000
adds: detailed agent instructions for OpenSpec workflow in issue temp…
Parsh May 7, 2026
adfc201
feat: optional recovery key backup flow closes #6942
antuz123 May 8, 2026
22e79a8
chore: archive update-recovery-key-backup-flow
antuz123 May 8, 2026
7d627d2
fix: use UAIView for recovery key reminder instead of custom banner
antuz123 May 11, 2026
27e42b0
Merge pull request #6949 from KeeperCommunity/feat/openspec-integration
Parsh May 11, 2026
0c295c4
feat: Concierge Tab Cleanup
cakesoft-vaibhav May 11, 2026
8e57684
Merge pull request #6946 from KeeperCommunity/antuz123/issue6942
cakesoft-vaibhav May 11, 2026
863692d
Update all flows to use io.hexawallet.keeper appId
cakesoft-swati May 11, 2026
9532b8a
adds: initial Bitcoin Keeper design system documentation
Parsh May 11, 2026
040a020
Merge pull request #6954 from KeeperCommunity/feat/openspec-integration
Parsh May 11, 2026
8fdc0f8
adds: document design system guidelines and UI implementation require…
Parsh May 11, 2026
62200bb
Merge pull request #6955 from KeeperCommunity/feat/openspec-integration
Parsh May 11, 2026
67d537c
adds: comprehensive authentication specification document
Parsh May 11, 2026
3239cb2
adds: comprehensive wallets specification document detailing lifecycl…
Parsh May 11, 2026
9f62839
adds: comprehensive signing-devices specification detailing lifecycle…
Parsh May 11, 2026
4723820
adds: comprehensive vault specification detailing lifecycle, requirem…
Parsh May 11, 2026
6dbb260
adds: comprehensive send-and-receive specification detailing transact…
Parsh May 11, 2026
59bffdd
adds: comprehensive transaction-history specification detailing trans…
Parsh May 11, 2026
f432b8b
adds: comprehensive UTXO management specification detailing visibilit…
Parsh May 11, 2026
2bab5e0
adds: comprehensive backup and recovery specification detailing seed …
Parsh May 11, 2026
17f68f0
removes: archived recovery key backup flow specifications and related…
Parsh May 11, 2026
dae2b8f
adds: comprehensive health-checks specification detailing reminder ca…
Parsh May 11, 2026
96edbe8
adds: comprehensive inheritance specification detailing vault creatio…
Parsh May 11, 2026
a32e344
build 2.5.12(595)
cakesoft-vaibhav May 12, 2026
b91d866
feat: enhance Electrum client error handling and TLS connection confi…
cakesoft-vaibhav May 12, 2026
bb41b0a
adds: comprehensive collaborative wallet specification detailing vaul…
Parsh May 12, 2026
80d43c7
fix: resolve layout overlap of WarningNote in Server Settings screen …
antuz123 May 12, 2026
f79017e
adds: comprehensive subscription specification detailing tier managem…
Parsh May 12, 2026
3bd846b
adds: comprehensive settings specification detailing node configurati…
Parsh May 12, 2026
657671a
adds: comprehensive notifications specification detailing FCM permiss…
Parsh May 12, 2026
597984c
adds: comprehensive concierge specification detailing onboarding, tic…
Parsh May 12, 2026
0cd3a89
adds: comprehensive Buy-Bitcoin specification detailing price display…
Parsh May 12, 2026
097bc4f
adds: comprehensive USDT specification detailing wallet lifecycle, cr…
Parsh May 12, 2026
b248283
fix: remove outdated proposal and schema for preventing send when not…
antuz123 May 12, 2026
2d70a58
Merge pull request #6957 from KeeperCommunity/fix/server-settings-tex…
cakesoft-vaibhav May 12, 2026
e317305
fix: update localization strings for recovery key backup and adjust s…
cakesoft-vaibhav May 12, 2026
aa1d9cf
Merge pull request #6959 from KeeperCommunity/fix/nodeIssue
cakesoft-vaibhav May 12, 2026
3a9315f
fix: update design guidelines to include SVG usage and improve modal …
Parsh May 12, 2026
6da81d2
chore: remove GitHub Copilot instructions file
Parsh May 12, 2026
66e43cb
Merge branch 'upgrade/rn-0.83.9' into feat/openspec-integration
Parsh May 12, 2026
c105a41
fix: update wallet specification to clarify terminology and enhance u…
Parsh May 12, 2026
e22ef1e
fix: update vault specification to reflect multi-key wallet terminolo…
Parsh May 12, 2026
2986dfc
fix: update UTXO management specification to replace 'vault' with 'wa…
Parsh May 12, 2026
3c31dfa
fix: update transaction history specification to replace 'vault' with…
Parsh May 12, 2026
0981fa0
fix: update collaborative wallet specification to replace 'vault' wit…
Parsh May 12, 2026
8329683
fix: update inheritance specification to replace 'vault' with 'wallet…
Parsh May 12, 2026
2a97d03
fix: update signing devices specification to replace 'vault' with 'wa…
Parsh May 12, 2026
ae626d0
fix: update send-and-receive specification to replace 'vault' with 'w…
Parsh May 12, 2026
a9d507b
fix: update settings specification to clarify wallet management and d…
Parsh May 12, 2026
bbc7d8e
fix: update notifications specification to replace 'UAI' with 'action…
Parsh May 12, 2026
0a587e0
fix: update USDT specification to remove Buy USDT feature, clarify Re…
Parsh May 12, 2026
5c0f8c1
fix: update backup and recovery specification to replace 'seed phrase…
Parsh May 12, 2026
73b151d
fix: update health-checks specification to clarify terminology, repla…
Parsh May 12, 2026
776ec8e
fix: update Buy-Bitcoin specification to mark it as deprecated, remov…
Parsh May 12, 2026
cf96122
fix: update Concierge specification to mark it as deprecated, remove …
Parsh May 12, 2026
8fa044e
fix: remove deprecated Sell Bitcoin requirement and related scenarios…
Parsh May 12, 2026
e1cbd6b
build 596
cakesoft-vaibhav May 13, 2026
342d146
fix: update KeeperQRCode component to handle SVG rendering issue on iOS
cakesoft-vaibhav May 13, 2026
e5a388b
fix: bump version code and update build numbers to 597
cakesoft-vaibhav May 13, 2026
5713d59
Merge pull request #6958 from KeeperCommunity/feat/openspec-integration
Parsh May 13, 2026
f16368d
fix: Nodes screen warning note recycling issue
cakesoft-vaibhav May 13, 2026
60da3bb
fix: update version codes to 598 across Android and iOS configurations
cakesoft-vaibhav May 13, 2026
f820d3c
feat: Implement Help AI feature with chat and issue submission
cakesoft-vaibhav May 14, 2026
0cb3ddb
feat: Refactor Help AI components to improve UI consistency and respo…
cakesoft-vaibhav May 14, 2026
3f7fd2c
feat: Enhance Help AI chat and draft card components for improved mes…
cakesoft-vaibhav May 14, 2026
d1a5f98
fix: enhance issue templates by adding missing sections and improving…
cakesoft-vaibhav May 14, 2026
5c62a59
feat: Add greeting messages for Help AI and enhance email handling in…
cakesoft-vaibhav May 14, 2026
b3cc71f
adds: specs for testnet-faucet-daily-limit
Parsh May 14, 2026
2bb75c5
feat: implement daily limit for testnet faucet requests and update lo…
Parsh May 14, 2026
3b373af
archived: daily limit enforcement for testnet faucet requests
Parsh May 14, 2026
7db99cf
Merge pull request #6967 from KeeperCommunity/feat/testnet-faucet-limit
cakesoft-vaibhav May 15, 2026
27dfe53
fix: Empty Wallet and Signer view illustration removed since it was c…
cakesoft-vaibhav May 15, 2026
cba7774
Merge branch 'upgrade/rn-0.83.9' into feat/AiChat
cakesoft-vaibhav May 15, 2026
53ef9f9
feat: enhance HelpAiChat metadata structure and update helpAi persist…
cakesoft-vaibhav May 18, 2026
ba5d727
feat: integrate ChatBubble icon and enhance Help AI components for im…
cakesoft-vaibhav May 18, 2026
90e4920
feat: remove ChatBubble icon from HelpAiEntryCard for cleaner UI
antuz123 May 19, 2026
d4af83e
feat: add appId parameter to helpChat and submitHelpIssue methods; in…
cakesoft-vaibhav May 19, 2026
5759d2f
fix: ios App crash on keeper ai chat screen
cakesoft-vaibhav May 19, 2026
629873d
feat: update Chat feature name
cakesoft-vaibhav May 19, 2026
bd6613a
fix: keyboard overlapping issue on ios
cakesoft-vaibhav May 19, 2026
6b2eab3
specs: automated ingestion of release notes into RAG database on GitH…
Parsh May 20, 2026
89830e9
feat: add workflow for ingesting release notes into RAG on release pu…
Parsh May 20, 2026
6bb8371
spec(archive): automated ingestion of release notes into RAG on GitH…
Parsh May 20, 2026
738ca8c
feat: add RagChunkAdmin screen and integrate access check functionality
cakesoft-vaibhav May 21, 2026
9f85c5e
Merge pull request #6979 from KeeperCommunity/feat/release-notes-rag-…
Parsh May 21, 2026
a964885
feat: update typing indicator text and enhance chat history UI with i…
cakesoft-vaibhav May 21, 2026
786048a
specs: Testnet indicator to Wallets, Keys, Receive, and Send Confirma…
antuz123 May 21, 2026
02507fc
feat: add titleSuffix prop to HomeScreenHeader for Testnet indication
antuz123 May 21, 2026
2dc2f93
spec archive: Testnet indicator to Wallets, Keys, Receive, and Send C…
antuz123 May 21, 2026
dcd552b
Merge pull request #6984 from KeeperCommunity/feat/AiChat-updateRag
cakesoft-vaibhav May 22, 2026
1aca032
fix: removed file download in handleFileScreen
cakesoft-vaibhav May 22, 2026
5313865
chore: update version to 2.5.13 and increment build number to 599
cakesoft-vaibhav May 22, 2026
3fbc6cc
Merge pull request #6983 from KeeperCommunity/feat/network-indicator
Parsh May 22, 2026
bfa6167
feat: add chat bubble icon and enhance HelpAiChat UI with improved la…
cakesoft-vaibhav May 22, 2026
cf5c258
Merge pull request #6925 from KeeperCommunity/upgrade/rn-0.83.9
cakesoft-vaibhav May 25, 2026
9a1e8bd
feat: implement help escalation link/route/email constants
cakesoft-vaibhav May 25, 2026
367e865
feat: Ask Keeper Disclaimer modal
cakesoft-vaibhav May 25, 2026
e8519ab
fix: iOS Icon missing issue
cakesoft-vaibhav May 25, 2026
fce2b8c
feat: update HelpAiChat styles for improved vertical padding on Android
cakesoft-vaibhav May 25, 2026
7ec6c9c
feat: add link sanitization functions for HelpAiChat responses
cakesoft-vaibhav May 25, 2026
b262be7
feat: add additional allowed domains for HelpAiChat links
cakesoft-vaibhav May 25, 2026
62a987a
specs: sensitive input guard for Ask Keeper chat feature
Parsh May 25, 2026
2fa176b
feat: implement sensitive input detection for chat and draft submissions
Parsh May 25, 2026
ff8e837
feat: add tests for sensitive input detection in HelpAi features
Parsh May 25, 2026
5f49c1f
feat: remove keyword-label detection for sensitive input to reduce fa…
Parsh May 25, 2026
55dcae8
archive(specs): sensitive input guard for chat and draft submissions
Parsh May 25, 2026
8745854
Merge pull request #6987 from KeeperCommunity/feat/sensitive-input-guard
cakesoft-vaibhav May 26, 2026
85de5f3
feat: add ragTimestamp field and validation to RagChunkAdminScreen
cakesoft-vaibhav May 26, 2026
8d7bf76
feat: add AskKeeperInfo screen and update navigation from disclaimer …
cakesoft-vaibhav May 26, 2026
d4466c4
feat: standardize LOCK_ICON_SIZE usage across HelpAiChat and HelpAiEn…
cakesoft-vaibhav May 26, 2026
a226918
feat: added e2e test cases for ask keeper
shashank-shinde May 26, 2026
f2a7433
Merge branch 'feat/AiChat' of github.com:KeeperCommunity/bitcoin-keep…
shashank-shinde May 26, 2026
d4e20f3
feat: add README for Maestro E2E automation and update package.json s…
shashank-shinde May 26, 2026
2bc3dbc
feat: implement Fab component and integrate it into HelpAiChatHistory…
cakesoft-vaibhav May 27, 2026
843df0f
Merge branch 'sprint' into feat/AiChat
cakesoft-vaibhav May 28, 2026
ec604d5
Merge branch 'feat/AiChat' into feat/AiChat-rateLimiting
cakesoft-vaibhav May 28, 2026
c75b2e0
Merge pull request #6995 from KeeperCommunity/feat/AiChat-rateLimiting
cakesoft-vaibhav May 28, 2026
80e4bfa
feat: enhance mnemonic detection to normalize input formats
Parsh May 28, 2026
56dba36
Merge pull request #6981 from KeeperCommunity/feat/AiChat
cakesoft-vaibhav May 29, 2026
fb4b487
release 2.5.13(600)
cakesoft-vaibhav May 29, 2026
e2d96c1
Merge pull request #6998 from KeeperCommunity/release/2.5.13-600
cakesoft-vaibhav May 29, 2026
597c2c8
Merge pull request #7000 from KeeperCommunity/main
cakesoft-vaibhav May 29, 2026
3c373fc
Merge branch 'sprint' into dev
cakesoft-vaibhav May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 14 additions & 3 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@ labels: "Status: to-do \U0001F4CB, Type: bug\U0001F41B"
assignees: ''

---

<!-- agent_instructions
Assign this issue to the change-engineer custom agent.
The agent MUST follow the full OpenSpec workflow:
1. Run `openspec new change "fix-<name>"` and commit all planning artifacts
(proposal.md, tasks.md, spec files) BEFORE making any code changes.
2. Apply code changes only after the spec commit exists.
3. Archive the change and open the PR referencing the archived proposal.
Do NOT make any code changes before step 1 is complete.
If the OpenSpec CLI is unavailable, follow the manual fallback in
`.github/skills/openspec-propose/SKILL.md` — do NOT skip the workflow.
-->
**Describe the bug**
A clear and concise description of what the bug is.

Expand All @@ -20,11 +30,12 @@ Steps to reproduce the behavior:
**Expected behavior**
A clear and concise description of what you expected to happen.

**Actual behavior**
A clear and concise description of what currently is.

**Screenshots**
If applicable, add screenshots to help explain your problem.



**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
Expand Down
44 changes: 31 additions & 13 deletions .github/ISSUE_TEMPLATE/feature-request.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,41 @@ labels: "Type: feature \U0001F39B️"
assignees: ''

---

Feature Description
<!-- agent_instructions
Assign this issue to the change-engineer custom agent.
The agent MUST follow the full OpenSpec workflow:
1. Run `openspec new change "<name>"` and commit all planning artifacts
(proposal.md, tasks.md, spec files) BEFORE making any code changes.
2. Apply code changes only after the spec commit exists.
3. Archive the change and open the PR referencing the archived proposal.
Do NOT make any code changes before step 1 is complete.
If the OpenSpec CLI is unavailable, follow the manual fallback in
`.github/skills/openspec-propose/SKILL.md` — do NOT skip the workflow.
-->
**Feature Description**
A clear and concise description of the feature

**Pre-requisites/ dependencies
-Designs
-Research
-Discussion with a Senior
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Task Break Down
-TASK 1
-TASK 2
**Expected behavior**
A clear and concise description of what you expected to happen.

**Test Cases
**Actual behavior**
A clear and concise description of what currently is.

**Design
**Screenshots**
If applicable, add screenshots to help explain your problem.

**Flow
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**ERD
**Additional context**
Add any other context about the problem here.
143 changes: 143 additions & 0 deletions .github/agents/change-engineer.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
---
name: change-engineer
description: >
Implements bugs and small feature changes for Bitcoin Keeper using the OpenSpec
default quick path (propose → apply → archive). Handles both bugs and features —
no need to choose a different agent.
---

You are a senior React Native engineer working on Bitcoin Keeper — a professional-grade,
Bitcoin-only mobile wallet focused on multi-sig Vault management, hardware signer integration,
and advanced UTXO control for iOS and Android.

Read `openspec/config.yaml` at the start of every session. It contains the project's tech
stack, domain map, critical rules, and per-artifact constraints that will be injected into
every OpenSpec artifact you create. You must treat everything in the `context:` and `rules:`
blocks as hard constraints.

## Hard Rules — Read Before Everything Else

These rules are non-negotiable. Violating any of them is a critical failure.

1. **Never touch code before a spec commit exists.**
The three-step workflow (Propose → Apply → Archive) is mandatory for every change, bug
or feature. No code file may be created or modified until all planning artifacts
(`proposal.md`, `tasks.md`, any spec files) are committed to `openspec/changes/<name>/`.

2. **If the OpenSpec CLI is unavailable, follow the manual fallback — do NOT skip to code.**
Each step has an explicit fallback skill file. Use it. The workflow is the same whether
the CLI runs or you follow the skill manually.

3. **If any prerequisite cannot be satisfied, STOP and report — do not improvise.**
If `openspec new change` fails, if skill files are missing, or if any blocking condition
cannot be resolved, stop immediately and explain the blocker to the user. Do not
pivot to a direct fix as a workaround.

4. **You are the change-engineer agent. Do not call `skill("change-engineer")`.**
You are already inside this agent. Invoke the OpenSpec steps directly using the CLI
commands and skill fallbacks described below. The `skill()` tool is for *other*
built-in skills (e.g. `openspec-propose`), not for invoking yourself.

## Setup

Before starting any step, ensure the OpenSpec CLI is available:

```bash
npm install -g @fission-ai/openspec@latest
openspec --version
```

If `npm` is not available, fall back: read each skill file directly and follow its steps
manually, treating every `openspec <command>` as pseudocode that describes the intent.
Use `openspec/config.yaml` as the source of context and rules when the CLI cannot inject
them automatically.

## Workflow

Execute OpenSpec CLI commands directly at each step. If the CLI is unavailable, fall back
to reading the corresponding skill file and following its instructions as a manual guide.

### Step 1 — Propose

Derive the change name from the issue:
- Features: descriptive kebab-case, e.g. `add-fee-insights-filter`
- Bugs: `fix-` prefix, e.g. `fix-vault-psbt-signing-crash`

```bash
openspec new change "<name>"
openspec status --change "<name>" --json
```

Parse the `applyRequires` and `artifacts` arrays from the status output. Then loop through
artifacts in dependency order — for each artifact whose dependencies are satisfied:

```bash
openspec instructions <artifact-id> --change "<name>" --json
```

Use the returned `template` as the file structure, `outputPath` as the write destination,
and treat `context` + `rules` as constraints (do not copy them into the file). Re-run
`openspec status` after each artifact until every ID in `applyRequires` has `status: "done"`.

Commit when all planning artifacts are ready:

```bash
git add openspec/changes/<name>/
git commit -m "spec: add OpenSpec artifacts for <name>"
```

> Fallback: `.github/skills/openspec-propose/SKILL.md`

### Step 2 — Apply

```bash
openspec status --change "<name>" --json
openspec instructions apply --change "<name>" --json
```

Read every file path listed under `contextFiles` in the apply instructions output. Work
through each pending task in order, make the required code changes, mark the task complete
(`- [ ]` → `- [x]`), and continue.

Bitcoin Keeper-specific implementation notes:
- Store changes: update the relevant Redux slice in `src/store/`, add or update the
corresponding saga in `src/store/sagas/`, and bump the Redux Persist migration version
in `src/store/migrations.ts` if the store shape changes.
- Realm schema changes: update the model in `src/models/` and ensure backward compatibility.
- PSBT / hardware signer flows: follow the existing signing flow pattern through
`src/services/` and `src/hardware/`; do not bypass the PSBT round-trip.
- Bitcoin amounts: keep all internal values in satoshis; use existing display helpers for
formatting — do not add new formatting logic unless necessary.
- Network-awareness: any service call must handle the offline / Electrum-disconnected state.

Commit in logical groups:

```
feat: <description> # features
fix: <description> closes #<N> # bugs
```

> Fallback: `.github/skills/openspec-apply-change/SKILL.md`

### Step 3 — Archive and open PR

Once every task in `tasks.md` is `[x]`:

```bash
openspec archive <name> --yes
git add openspec/
git commit -m "chore: archive <name>"
```

`openspec archive` validates the change, merges any delta specs into `openspec/specs/`,
and moves the change folder to `openspec/changes/archive/YYYY-MM-DD-<name>/`. Use
`--skip-specs` only for infrastructure or tooling changes that have no spec impact.

Then open the PR:
- Title: `feat: <description>` or `fix: <description> (closes #<N>)`
- Body: link to the issue + paste the archived `proposal.md` Intent and Scope (or the
Analysis section from `tasks.md` for bugs)
- Label the PR with the affected area: `vault`, `wallet`, `signer`, `utxo`, `send`,
`receive`, `backup`, `settings`, or `infra`

> Fallback: `.github/skills/openspec-archive-change/SKILL.md`
149 changes: 149 additions & 0 deletions .github/prompts/opsx-apply.prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
---
description: Implement tasks from an OpenSpec change (Experimental)
---

Implement tasks from an OpenSpec change.

**Input**: Optionally specify a change name (e.g., `/opsx:apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.

**Steps**

1. **Select the change**

If a name is provided, use it. Otherwise:
- Infer from conversation context if the user mentioned a change
- Auto-select if only one active change exists
- If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select

Always announce: "Using change: <name>" and how to override (e.g., `/opsx:apply <other>`).

2. **Check status to understand the schema**
```bash
openspec status --change "<name>" --json
```
Parse the JSON to understand:
- `schemaName`: The workflow being used (e.g., "spec-driven")
- Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)

3. **Get apply instructions**

```bash
openspec instructions apply --change "<name>" --json
```

This returns:
- `contextFiles`: artifact ID -> array of concrete file paths (varies by schema)
- Progress (total, complete, remaining)
- Task list with status
- Dynamic instruction based on current state

**Handle states:**
- If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx:continue`
- If `state: "all_done"`: congratulate, suggest archive
- Otherwise: proceed to implementation

4. **Read context files**

Read every file path listed under `contextFiles` from the apply instructions output.
The files depend on the schema being used:
- **spec-driven**: proposal, specs, design, tasks
- Other schemas: follow the contextFiles from CLI output

5. **Show current progress**

Display:
- Schema being used
- Progress: "N/M tasks complete"
- Remaining tasks overview
- Dynamic instruction from CLI

6. **Implement tasks (loop until done or blocked)**

For each pending task:
- Show which task is being worked on
- Make the code changes required
- Keep changes minimal and focused
- Mark task complete in the tasks file: `- [ ]` → `- [x]`
- Continue to next task

**Pause if:**
- Task is unclear → ask for clarification
- Implementation reveals a design issue → suggest updating artifacts
- Error or blocker encountered → report and wait for guidance
- User interrupts

7. **On completion or pause, show status**

Display:
- Tasks completed this session
- Overall progress: "N/M tasks complete"
- If all done: suggest archive
- If paused: explain why and wait for guidance

**Output During Implementation**

```
## Implementing: <change-name> (schema: <schema-name>)

Working on task 3/7: <task description>
[...implementation happening...]
✓ Task complete

Working on task 4/7: <task description>
[...implementation happening...]
✓ Task complete
```

**Output On Completion**

```
## Implementation Complete

**Change:** <change-name>
**Schema:** <schema-name>
**Progress:** 7/7 tasks complete ✓

### Completed This Session
- [x] Task 1
- [x] Task 2
...

All tasks complete! You can archive this change with `/opsx:archive`.
```

**Output On Pause (Issue Encountered)**

```
## Implementation Paused

**Change:** <change-name>
**Schema:** <schema-name>
**Progress:** 4/7 tasks complete

### Issue Encountered
<description of the issue>

**Options:**
1. <option 1>
2. <option 2>
3. Other approach

What would you like to do?
```

**Guardrails**
- Keep going through tasks until done or blocked
- Always read context files before starting (from the apply instructions output)
- If task is ambiguous, pause and ask before implementing
- If implementation reveals issues, pause and suggest artifact updates
- Keep code changes minimal and scoped to each task
- Update task checkbox immediately after completing each task
- Pause on errors, blockers, or unclear requirements - don't guess
- Use contextFiles from CLI output, don't assume specific file names

**Fluid Workflow Integration**

This skill supports the "actions on a change" model:

- **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions
- **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly
Loading
Loading