Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
5046c7b
wip: scp11 tests
DennisDyallo Dec 16, 2025
9ae5002
feat: add default-instruction for antigrav
DennisDyallo Dec 16, 2025
6607c54
Improve SmartCard connection robustness and disposal
DennisDyallo Dec 16, 2025
5bdd727
Add documentation for UsbSmartCardConnection robustness
DennisDyallo Dec 16, 2025
0cad7ed
refactor: rename scp classes for clarity
DennisDyallo Dec 17, 2025
808beab
feat: adding ssl impl of AesCmac
DennisDyallo Dec 17, 2025
f958872
refactor: simplify PCSCProtocol
DennisDyallo Dec 17, 2025
4ac1f77
chore: gitignore
DennisDyallo Dec 17, 2025
212d445
refactor: reformat ECPublicKey
DennisDyallo Dec 17, 2025
fd13c30
feat: add x963kdf class
DennisDyallo Dec 17, 2025
d5f7e54
feat: add transactionscope to ISmartCardConnection
DennisDyallo Dec 17, 2025
c4a094d
refactor(scp): improvements to scp
DennisDyallo Dec 17, 2025
05eb282
feat: managementSession takes protocolConfiguration
DennisDyallo Dec 17, 2025
77793ec
feat: add protocolConfiguration
DennisDyallo Dec 17, 2025
cca56b6
tests: adding protocolConfiguration to scptests
DennisDyallo Dec 17, 2025
15525c3
tests: impl interface in test class
DennisDyallo Dec 17, 2025
2431e4b
refactor: return ReadOnlyMemory in Tlv
DennisDyallo Dec 17, 2025
e27f37a
refactor: SCP11 key derivation functions and unit tests
DennisDyallo Dec 17, 2025
31b5722
refactor: improve APDU transmission and response handling
DennisDyallo Dec 17, 2025
697fcb9
refactor: enhance documentation and improve transaction scope management
DennisDyallo Dec 17, 2025
60fdbe8
refactor: improve protocol configuration retrieval in dependency inje…
DennisDyallo Dec 17, 2025
f6e1ba1
refactor: update connection handling to use await using for better re…
DennisDyallo Dec 17, 2025
518616d
refactor: rename ZeroingMemoryHandle with DisposableBufferHandle
DennisDyallo Dec 17, 2025
c145bab
refactor: update CreateFromSubjectPublicKeyInfo to use ECDiffieHellma…
DennisDyallo Dec 17, 2025
5f72ef7
refactor: add DisposableArrayPoolBuffer for efficient memory management
DennisDyallo Dec 17, 2025
be03cd0
refactor: rename GenerateOceReceipt to GenerateOceReceiptCmac and imp…
DennisDyallo Dec 17, 2025
43379ac
refactor: rename
DennisDyallo Dec 18, 2025
bda1f5e
test: Add reference to ansx963_2001.rsp for X9.63-2001
DennisDyallo Jan 7, 2026
9fc3259
refactor: Enhance DisposableArrayPoolBuffer
DennisDyallo Jan 7, 2026
c5e0386
feat: add ToUncompressedPoint extension method
DennisDyallo Jan 7, 2026
81f9f42
fix: SCP11b implementation
DennisDyallo Jan 7, 2026
ed4649c
tests: Add deterministic SCP11b test
DennisDyallo Jan 7, 2026
6cc9347
feat: Add TryFindValue method for searching TLV encoded data
DennisDyallo Jan 7, 2026
7d06a14
feat: Extract keyUsage, keyType, and keyLen from oceAuthenticateData …
DennisDyallo Jan 7, 2026
800406b
docs: consolidated scp work documentation
DennisDyallo Jan 7, 2026
8e88f57
tests: add test vectors for SHA256 AesCmac
DennisDyallo Jan 7, 2026
74dcd61
refactor: streamline Directory.Build.props structure and formatting
DennisDyallo Jan 7, 2026
7336bb5
Add CLAUDE and README documentation for PIV and Security Domain modules
DennisDyallo Jan 7, 2026
9a8a41e
feat(sd): added PutKeyAsync(StaticKeys keys)
DennisDyallo Jan 7, 2026
611a8c6
docs: add guidelines for legacy code reference in CLAUDE.md
DennisDyallo Jan 7, 2026
7c6f629
docs: add initial Junie Agent instructions
DennisDyallo Jan 7, 2026
67c8765
feat(tests): add SharedSmartCardConnection to manage connection lifec…
DennisDyallo Jan 7, 2026
13be025
refactor(tests): simplify WithSecurityDomainSessionAsync calls in Sec…
DennisDyallo Jan 7, 2026
53985b7
refactor(sd): streamline disposal and transmission logic in UsbSmartC…
DennisDyallo Jan 7, 2026
b063cee
refactor(sd): change key fields to readonly in StaticKeys for improve…
DennisDyallo Jan 7, 2026
20fa414
refactor(tests): split integration tests for Security Domain sessions…
DennisDyallo Jan 7, 2026
a9e1e6f
refactor(sd): rename APDU formatter classes and update usage in SCP p…
DennisDyallo Jan 7, 2026
e4df335
refactor(buffer): add Length property to DisposableArrayPoolBuffer fo…
DennisDyallo Jan 7, 2026
3fefa0a
refactor(pcsc): reorder method
DennisDyallo Jan 7, 2026
38b99e7
refactor(scp): remove unnecessary formatter parameter from ScpProcess…
DennisDyallo Jan 7, 2026
1eb330f
refactor: remove unused IAsyncDisposable interface from UsbSmartCardC…
DennisDyallo Jan 7, 2026
2e16b6a
refactor(tlv): enhance KeyReference and Tlv classes with additional o…
DennisDyallo Jan 8, 2026
b890911
refactor(security-domain): update WithScpAsync return type and improv…
DennisDyallo Jan 8, 2026
5c4c91e
refactor(tests): add new integration tests for card recognition and d…
DennisDyallo Jan 8, 2026
114957a
refactor(tests): enhance SCP11 integration tests with improved key ha…
DennisDyallo Jan 8, 2026
10a3f3a
feat(security-domain): implement StoreCertificatesAsync
DennisDyallo Jan 8, 2026
bf6a50d
ai: added skills, agents and instructions
DennisDyallo Jan 8, 2026
e9df3ff
fix(scp): clarify encryption handling in TransmitAsync and ScpState
DennisDyallo Jan 8, 2026
8d7cb95
test(scp03): add GetData_Unauthenticated test for session handling
DennisDyallo Jan 8, 2026
ac8e656
feat(hid): add macOS HID device implementation
DennisDyallo Jan 9, 2026
c2e1902
feat(hid): integrate HID into YubiKey discovery and factory
DennisDyallo Jan 9, 2026
ebc7ed9
test(hid): add basic HID enumeration integration tests
DennisDyallo Jan 9, 2026
1f1ddee
docs: update HID implementation status for macOS
DennisDyallo Jan 9, 2026
c755a6a
ai: add Ralph Loop Prompt Writing Skill documentation
DennisDyallo Jan 9, 2026
3482aaa
docs: add commit guidelines for agents and emphasize commit discipline
DennisDyallo Jan 9, 2026
e7888b7
feat(build): add support for filtering and specific project testing i…
DennisDyallo Jan 9, 2026
df0f326
refactor(hid): remove #region from FindHidDevices per CLAUDE.md guide…
DennisDyallo Jan 9, 2026
2f34e35
ai: add platform porting and SDK service integration templates
DennisDyallo Jan 9, 2026
e275282
refactor(hid): remove #region from HidYubiKey and YubiKeyFactory per …
DennisDyallo Jan 9, 2026
2fb22a5
tests: remove unused test
DennisDyallo Jan 9, 2026
b12cbe0
refactor(tests): simplify protocol variable declaration in ScpExtensi…
DennisDyallo Jan 9, 2026
df92457
refactor(protocol): update Configure method to allow null configurati…
DennisDyallo Jan 9, 2026
46ec010
refactor(tests): update exception type in PcscProtocolTests to ApduEx…
DennisDyallo Jan 9, 2026
a2e5650
refactor: Refactor HidDevices and Add ConnectionType to IYubiKey and …
DennisDyallo Jan 9, 2026
daa1d36
docs: add comprehensive HID protocol implementation plan
DennisDyallo Jan 9, 2026
9d98633
refactor: rename _useExtendedApdus to UseExtendedApdus
DennisDyallo Jan 9, 2026
9ad6a79
docs: add git commit rules for consistency and clarity
DennisDyallo Jan 9, 2026
2256571
docs: update commit guidelines for clarity and structure
DennisDyallo Jan 9, 2026
a8873b8
feat: add workspace-level Copilot commit message instructions
DennisDyallo Jan 9, 2026
238b3e4
feat(hid): remove outdated HID devices implementation plan
DennisDyallo Jan 9, 2026
f5be133
feat(build): enhance build script with project filtering options
DennisDyallo Jan 9, 2026
4524272
docs(build): update build script documentation for clarity
DennisDyallo Jan 9, 2026
2d6b625
feat(device): allow filtering by ConnectionType.All in FindAllAsync
DennisDyallo Jan 9, 2026
0ef0da0
feat(build): enhance test project discovery and filtering
DennisDyallo Jan 9, 2026
67ef6f3
feat(hid): implement FIDO and OTP connection abstractions
DennisDyallo Jan 9, 2026
7541791
fix(hid): correct CTAP_READ_CONFIG page payload format
DennisDyallo Jan 9, 2026
6f07b17
refactor(management): implement Backend pattern to eliminate protocol…
DennisDyallo Jan 10, 2026
406b4a9
fix(management): backend should not own protocol disposal
DennisDyallo Jan 10, 2026
fca6ba4
feat(documentation): update CLAUDE.md and README.md for backend pattern
DennisDyallo Jan 10, 2026
dc23424
docs(plans): mark HID implementation plans as completed
DennisDyallo Jan 10, 2026
ce2a118
feat(documentation): add .NET Build System Skill guide
DennisDyallo Jan 10, 2026
c6d455e
fix(dependency-injection): handle null exception for ProtocolConfigur…
DennisDyallo Jan 10, 2026
459d3a7
refactor(tests): improve ManagementTests readability and add TODO com…
DennisDyallo Jan 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .agent/rules/default-instruction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
trigger: always_on
---

DO: read the CLAUDE.md file in the root of the project, then proceed with your work.
52 changes: 52 additions & 0 deletions .claude/skills/brainstorming/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
name: brainstorming
description: Use before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
---

# Brainstorming Ideas Into Designs

## Overview

Help turn ideas into fully formed designs and specs through natural collaborative dialogue.

Start by understanding the current project context, then ask questions one at a time to refine the idea. Once you understand what you're building, present the design in small sections (200-300 words), checking after each section whether it looks right so far.

## The Process

**Understanding the idea:**
- Check out the current project state first (files, docs, recent commits)
- Ask questions one at a time to refine the idea
- Prefer multiple choice questions when possible, but open-ended is fine too
- Only one question per message - if a topic needs more exploration, break it into multiple questions
- Focus on understanding: purpose, constraints, success criteria

**Exploring approaches:**
- Propose 2-3 different approaches with trade-offs
- Present options conversationally with your recommendation and reasoning
- Lead with your recommended option and explain why

**Presenting the design:**
- Once you believe you understand what you're building, present the design
- Break it into sections of 200-300 words
- Ask after each section whether it looks right so far
- Cover: architecture, components, data flow, error handling, testing
- Be ready to go back and clarify if something doesn't make sense

## After the Design

**Documentation:**
- Write the validated design to `docs/plans/YYYY-MM-DD-<topic>-design.md`
- Commit the design document to git

**Implementation (if continuing):**
- Ask: "Ready to set up for implementation?"
- Use writing-plans skill to create detailed implementation plan

## Key Principles

- **One question at a time** - Don't overwhelm with multiple questions
- **Multiple choice preferred** - Easier to answer than open-ended when possible
- **YAGNI ruthlessly** - Remove unnecessary features from all designs
- **Explore alternatives** - Always propose 2-3 approaches before settling
- **Incremental validation** - Present design in sections, validate each
- **Be flexible** - Go back and clarify when something doesn't make sense
154 changes: 154 additions & 0 deletions .claude/skills/dispatching-parallel-agents/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
---
name: dispatching-parallel-agents
description: Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
---

# Dispatching Parallel Agents

## Overview

When you have multiple unrelated failures (different test files, different subsystems, different bugs), investigating them sequentially wastes time. Each investigation is independent and can happen in parallel.

**Core principle:** Dispatch one agent per independent problem domain. Let them work concurrently.

## When to Use

**Use when:**
- 3+ test files failing with different root causes
- Multiple subsystems broken independently
- Each problem can be understood without context from others
- No shared state between investigations

**Don't use when:**
- Failures are related (fix one might fix others)
- Need to understand full system state
- Agents would interfere with each other

## The Pattern

### 1. Identify Independent Domains

Group failures by what's broken:
- File A tests: Tool approval flow
- File B tests: Batch completion behavior
- File C tests: Abort functionality

Each domain is independent - fixing tool approval doesn't affect abort tests.

### 2. Create Focused Agent Tasks

Each agent gets:
- **Specific scope:** One test file or subsystem
- **Clear goal:** Make these tests pass
- **Constraints:** Don't change other code
- **Expected output:** Summary of what you found and fixed

### 3. Dispatch in Parallel

Use the Task tool with agent_type: "general-purpose" for each independent problem:

```
Task("Fix agent-tool-abort.test.ts failures")
Task("Fix batch-completion-behavior.test.ts failures")
Task("Fix tool-approval-race-conditions.test.ts failures")
// All three run concurrently
```

### 4. Review and Integrate

When agents return:
- Read each summary
- Verify fixes don't conflict
- Run full test suite
- Integrate all changes

## Agent Prompt Structure

Good agent prompts are:
1. **Focused** - One clear problem domain
2. **Self-contained** - All context needed to understand the problem
3. **Specific about output** - What should the agent return?

```markdown
Fix the 3 failing tests in src/agents/agent-tool-abort.test.ts:

1. "should abort tool with partial output capture" - expects 'interrupted at' in message
2. "should handle mixed completed and aborted tools" - fast tool aborted instead of completed
3. "should properly track pendingToolCount" - expects 3 results but gets 0

These are timing/race condition issues. Your task:

1. Read the test file and understand what each test verifies
2. Identify root cause - timing issues or actual bugs?
3. Fix by:
- Replacing arbitrary timeouts with event-based waiting
- Fixing bugs in abort implementation if found
- Adjusting test expectations if testing changed behavior

Do NOT just increase timeouts - find the real issue.

Return: Summary of what you found and what you fixed.
```

## Common Mistakes

**❌ Too broad:** "Fix all the tests" - agent gets lost
**✅ Specific:** "Fix agent-tool-abort.test.ts" - focused scope

**❌ No context:** "Fix the race condition" - agent doesn't know where
**✅ Context:** Paste the error messages and test names

**❌ No constraints:** Agent might refactor everything
**✅ Constraints:** "Do NOT change production code" or "Fix tests only"

**❌ Vague output:** "Fix it" - you don't know what changed
**✅ Specific:** "Return summary of root cause and changes"

## When NOT to Use

**Related failures:** Fixing one might fix others - investigate together first
**Need full context:** Understanding requires seeing entire system
**Exploratory debugging:** You don't know what's broken yet
**Shared state:** Agents would interfere (editing same files, using same resources)

## Real Example

**Scenario:** 6 test failures across 3 files after major refactoring

**Failures:**
- agent-tool-abort.test.ts: 3 failures (timing issues)
- batch-completion-behavior.test.ts: 2 failures (tools not executing)
- tool-approval-race-conditions.test.ts: 1 failure (execution count = 0)

**Decision:** Independent domains - abort logic separate from batch completion separate from race conditions

**Dispatch:**
```
Agent 1 → Fix agent-tool-abort.test.ts
Agent 2 → Fix batch-completion-behavior.test.ts
Agent 3 → Fix tool-approval-race-conditions.test.ts
```

**Results:**
- Agent 1: Replaced timeouts with event-based waiting
- Agent 2: Fixed event structure bug (threadId in wrong place)
- Agent 3: Added wait for async tool execution to complete

**Integration:** All fixes independent, no conflicts, full suite green

**Time saved:** 3 problems solved in parallel vs sequentially

## Key Benefits

1. **Parallelization** - Multiple investigations happen simultaneously
2. **Focus** - Each agent has narrow scope, less context to track
3. **Independence** - Agents don't interfere with each other
4. **Speed** - 3 problems solved in time of 1

## Verification

After agents return:
1. **Review each summary** - Understand what changed
2. **Check for conflicts** - Did agents edit same code?
3. **Run full suite** - Verify all fixes work together
4. **Spot check** - Agents can make systematic errors
Loading
Loading