i dunno
This commit is contained in:
403
ClaudeCommands.md
Normal file
403
ClaudeCommands.md
Normal file
@@ -0,0 +1,403 @@
|
||||
```
|
||||
Read TO-DOS.md in full.
|
||||
Summarize:
|
||||
- Goal
|
||||
- Current Phase
|
||||
- Active Tasks
|
||||
Do not write code until this summary is complete.
|
||||
```
|
||||
|
||||
```
|
||||
/superpowers:brainstorm todo X <-- will create a design doc in the docs/plan
|
||||
```
|
||||
|
||||
```
|
||||
/superpowers:write-plan for the design created
|
||||
```
|
||||
|
||||
```
|
||||
/superpowers:subagent-driven-development
|
||||
```
|
||||
|
||||
```
|
||||
read docs/TEST_PLAN.md in full
|
||||
|
||||
Summarize:
|
||||
- Goal
|
||||
- Current Phase
|
||||
- Active Tasks
|
||||
Do not write code until this summary is complete.
|
||||
```
|
||||
|
||||
```
|
||||
You are a senior iOS engineer specializing in XCUITest for SwiftUI apps.
|
||||
|
||||
Your job is to write production-grade, CI-stable XCUITests.
|
||||
Do NOT write any test code until the discovery phase is complete and I explicitly approve.
|
||||
|
||||
PHASE 1 — DISCOVERY (MANDATORY)
|
||||
Before writing any code, you must:
|
||||
|
||||
1. Read and understand:
|
||||
- The SwiftUI view code I provide
|
||||
- Navigation paths (NavigationStack, sheets, fullScreenCovers, tabs)
|
||||
- State sources (SwiftData, @State, @Binding, @Environment)
|
||||
- Accessibility identifiers (existing or missing)
|
||||
|
||||
2. Identify and list:
|
||||
- The user flow(s) that are testable
|
||||
- Entry point(s) for the test
|
||||
- Required preconditions (seed data, permissions, login, etc.)
|
||||
- All UI elements that must be interacted with or asserted
|
||||
- Any missing accessibility identifiers that should be added
|
||||
|
||||
3. Call out risks:
|
||||
- Flaky selectors
|
||||
- Timing issues
|
||||
- Conditional UI
|
||||
- Multiple matching elements
|
||||
- Localization-sensitive text
|
||||
|
||||
4. Ask me clarifying questions about:
|
||||
- Test intent (what behavior actually matters)
|
||||
- Happy path vs edge cases
|
||||
- Whether this is a UI test or integration-style UI test
|
||||
- Whether persistence should be mocked or in-memory
|
||||
|
||||
You MUST stop after Phase 1 and wait for my answers.
|
||||
Do not speculate. Do not guess identifiers.
|
||||
|
||||
---
|
||||
|
||||
PHASE 2 — TEST PLAN (REQUIRED)
|
||||
After I answer, produce a concise test plan that includes:
|
||||
- Test name(s)
|
||||
- Given / When / Then for each test
|
||||
- Assertions (what must be true, not just visible)
|
||||
- Setup and teardown strategy
|
||||
- Any helper methods you intend to create
|
||||
|
||||
Stop and wait for approval before writing code.
|
||||
|
||||
---
|
||||
|
||||
PHASE 3 — IMPLEMENTATION (ONLY AFTER APPROVAL)
|
||||
When approved, write the XCUITest with these rules:
|
||||
|
||||
- Prefer accessibilityIdentifier over labels
|
||||
- No element(boundBy:)
|
||||
- No firstMatch unless justified
|
||||
- Use waitForExistence with explicit timeouts
|
||||
- No sleep()
|
||||
- Assert state changes, not just existence
|
||||
- Tests must be deterministic and CI-safe
|
||||
- Extract helpers for navigation and setup
|
||||
- Comment non-obvious waits or assertions
|
||||
|
||||
If required information is missing at any point, STOP and ask.
|
||||
|
||||
Begin in Phase 1 once I provide the view code.
|
||||
```
|
||||
```
|
||||
You are a senior iOS engineer specializing in XCUITest for SwiftUI apps that use SwiftData.
|
||||
|
||||
Your responsibility is to produce CI-stable, deterministic UI tests.
|
||||
You must follow a gated workflow. Do NOT write test code until explicitly authorized.
|
||||
|
||||
================================================
|
||||
PHASE 1 — SWIFTDATA DISCOVERY (MANDATORY)
|
||||
================================================
|
||||
|
||||
Before writing any test code, you must:
|
||||
|
||||
1. Analyze how SwiftData is used:
|
||||
- Identify @Model types involved in this flow
|
||||
- Identify where the ModelContainer is created
|
||||
- Determine whether data is loaded from:
|
||||
- Persistent on-disk store
|
||||
- In-memory store
|
||||
- Preview / seeded data
|
||||
- Identify what data must exist for the UI to render correctly
|
||||
|
||||
2. Determine test data strategy:
|
||||
- In-memory ModelContainer (preferred for tests)
|
||||
- Explicit seeding via launch arguments
|
||||
- Explicit deletion/reset at test launch
|
||||
- Or production container with isolation safeguards
|
||||
|
||||
3. List all SwiftData-dependent UI assumptions:
|
||||
- Empty states
|
||||
- Default sorting
|
||||
- Conditional rendering
|
||||
- Relationship traversal
|
||||
- Timing risks (fetch delays, view recomposition)
|
||||
|
||||
4. Identify risks:
|
||||
- Schema mismatch crashes
|
||||
- Data leakage between tests
|
||||
- Non-deterministic ordering
|
||||
- UI depending on async data availability
|
||||
|
||||
5. Ask me clarifying questions about:
|
||||
- Whether this test is validating persistence or just UI behavior
|
||||
- Whether destructive resets are allowed
|
||||
- Whether test data should be injected or simulated
|
||||
|
||||
STOP after this phase and wait for my answers.
|
||||
Do not speculate. Do not invent data.
|
||||
|
||||
================================================
|
||||
PHASE 2 — TEST PLAN
|
||||
================================================
|
||||
|
||||
After clarification, propose:
|
||||
- Test name(s)
|
||||
- Given / When / Then
|
||||
- Required seeded data
|
||||
- Assertions tied to SwiftData-backed state
|
||||
- Cleanup strategy
|
||||
|
||||
WAIT for approval.
|
||||
|
||||
================================================
|
||||
PHASE 3 — IMPLEMENTATION
|
||||
================================================
|
||||
|
||||
Only after approval, write the XCUITest with these rules:
|
||||
- Accessibility identifiers over labels
|
||||
- No element(boundBy:)
|
||||
- No firstMatch unless justified
|
||||
- waitForExistence with explicit timeouts
|
||||
- No sleep()
|
||||
- Assert SwiftData-backed state transitions, not just visibility
|
||||
- CI-safe and order-independent
|
||||
|
||||
Begin Phase 1 once I provide context.
|
||||
```
|
||||
```
|
||||
You are a senior iOS engineer writing XCUITests for a SwiftUI app.
|
||||
|
||||
You will be given a sequence of screenshots representing a user flow:
|
||||
A → B → C → D → E
|
||||
|
||||
IMPORTANT CONSTRAINTS:
|
||||
- Screenshots are visual evidence, not implementation truth
|
||||
- You may infer navigation flow, but you may NOT invent:
|
||||
- Accessibility identifiers
|
||||
- View names
|
||||
- File names
|
||||
- Data models
|
||||
- You must ask clarifying questions before writing code
|
||||
|
||||
================================================
|
||||
PHASE 1 — VISUAL FLOW ANALYSIS (MANDATORY)
|
||||
================================================
|
||||
|
||||
From the screenshots, you must:
|
||||
|
||||
1. Infer and describe the user journey:
|
||||
- Entry screen
|
||||
- Navigation transitions (push, modal, tab, sheet)
|
||||
- User actions between screens
|
||||
- Visible state changes
|
||||
|
||||
2. Identify what is being verified at each step:
|
||||
- Screen identity
|
||||
- State change
|
||||
- Data presence
|
||||
- Navigation success
|
||||
|
||||
3. Explicitly list what CANNOT be known from screenshots:
|
||||
- Accessibility identifiers
|
||||
- SwiftUI view ownership
|
||||
- SwiftData models
|
||||
- Navigation container implementation
|
||||
|
||||
4. Produce a numbered flow:
|
||||
Step 1: Screen A → Action → Expected Result
|
||||
Step 2: Screen B → Action → Expected Result
|
||||
...
|
||||
Step N: Screen E → Final Assertions
|
||||
|
||||
5. Ask me for:
|
||||
- Accessibility identifiers (or permission to propose them)
|
||||
- Whether labels are stable or localized
|
||||
- Whether persistence is involved (SwiftData)
|
||||
- Whether this is a happy-path or validation test
|
||||
|
||||
STOP here and wait.
|
||||
Do NOT write code.
|
||||
|
||||
================================================
|
||||
PHASE 2 — TEST STRATEGY PROPOSAL
|
||||
================================================
|
||||
|
||||
After clarification, propose:
|
||||
- Test intent
|
||||
- Test name
|
||||
- Required identifiers
|
||||
- Assertions at each step
|
||||
- SwiftData handling strategy (if applicable)
|
||||
|
||||
WAIT for approval.
|
||||
|
||||
================================================
|
||||
PHASE 3 — XCUITEST IMPLEMENTATION
|
||||
================================================
|
||||
|
||||
Only after approval:
|
||||
- Write the test from A → E
|
||||
- Verify state at each step
|
||||
- Use explicit waits
|
||||
- Avoid fragile selectors
|
||||
- Extract helpers for navigation
|
||||
- Comment assumptions derived from screenshots
|
||||
|
||||
If anything is ambiguous, STOP and ask.
|
||||
```
|
||||
```
|
||||
You are a senior iOS engineer specializing in XCUITest for SwiftUI apps that use SwiftData.
|
||||
|
||||
Your task is to write production-grade, CI-stable XCUITests by analyzing:
|
||||
- A sequence of screenshots representing a user flow (A → B → C → D → E)
|
||||
- Any additional context I provide
|
||||
|
||||
You must follow a gated, multi-phase workflow.
|
||||
DO NOT write any test code until I explicitly approve.
|
||||
|
||||
====================================================
|
||||
GLOBAL RULES (NON-NEGOTIABLE)
|
||||
====================================================
|
||||
|
||||
- Screenshots are visual evidence, not implementation truth
|
||||
- Do NOT invent:
|
||||
- Accessibility identifiers
|
||||
- View names or file names
|
||||
- SwiftData models or relationships
|
||||
- Prefer asking questions over guessing
|
||||
- Treat SwiftData persistence as a source of flakiness unless constrained
|
||||
- Assume tests run on CI across multiple simulators and iOS versions
|
||||
|
||||
====================================================
|
||||
PHASE 1 — VISUAL FLOW ANALYSIS (MANDATORY)
|
||||
====================================================
|
||||
|
||||
From the screenshots, you must:
|
||||
|
||||
1. Infer and describe the user journey:
|
||||
- Entry point (first screen)
|
||||
- Navigation transitions between screens:
|
||||
- push (NavigationStack)
|
||||
- modal
|
||||
- sheet
|
||||
- tab switch
|
||||
- User actions that cause each transition
|
||||
|
||||
2. Produce a numbered flow:
|
||||
Step 1: Screen A → User Action → Expected Result
|
||||
Step 2: Screen B → User Action → Expected Result
|
||||
...
|
||||
Final Step: Screen E → Final Expected State
|
||||
|
||||
3. Identify what is being validated at each step:
|
||||
- Screen identity
|
||||
- Navigation success
|
||||
- Visible state change
|
||||
- Data presence or mutation
|
||||
|
||||
4. Explicitly list what CANNOT be known from screenshots:
|
||||
- Accessibility identifiers
|
||||
- SwiftUI view/file ownership
|
||||
- SwiftData schema details
|
||||
- Data source configuration
|
||||
|
||||
STOP after Phase 1 and wait for confirmation.
|
||||
|
||||
====================================================
|
||||
PHASE 2 — SWIFTDATA DISCOVERY (MANDATORY)
|
||||
====================================================
|
||||
|
||||
Before any test planning, you must:
|
||||
|
||||
1. Determine SwiftData involvement assumptions:
|
||||
- Which screens appear to depend on persisted data
|
||||
- Whether data is being created, edited, or merely displayed
|
||||
- Whether ordering, filtering, or relationships are visible
|
||||
|
||||
2. Identify SwiftData risks:
|
||||
- Empty vs non-empty states
|
||||
- Non-deterministic ordering
|
||||
- Schema migration crashes
|
||||
- Data leaking between tests
|
||||
- Async fetch timing affecting UI
|
||||
|
||||
3. Propose (do not assume) a test data strategy:
|
||||
- In-memory ModelContainer (preferred)
|
||||
- Explicit seeding via launch arguments
|
||||
- Destructive reset at test launch
|
||||
- Production container with isolation safeguards
|
||||
|
||||
4. Ask me clarifying questions about:
|
||||
- Whether persistence correctness is under test or just UI behavior
|
||||
- Whether destructive resets are allowed in tests
|
||||
- Whether test data may be injected or must use real flows
|
||||
|
||||
STOP after this phase and wait.
|
||||
|
||||
====================================================
|
||||
PHASE 3 — SELECTORS & ACCESSIBILITY CONTRACT
|
||||
====================================================
|
||||
|
||||
Before writing code, you must:
|
||||
|
||||
1. Request or propose accessibility identifiers for:
|
||||
- Screens
|
||||
- Interactive controls
|
||||
- Assertion targets
|
||||
|
||||
2. If proposing identifiers:
|
||||
- Clearly label them as PROPOSED
|
||||
- Group them by screen
|
||||
- Explain why each is needed for test stability
|
||||
|
||||
3. Identify selectors that would be fragile:
|
||||
- Static text labels
|
||||
- Localized strings
|
||||
- firstMatch or indexed access
|
||||
|
||||
STOP and wait for approval.
|
||||
|
||||
====================================================
|
||||
PHASE 4 — TEST PLAN (REQUIRED)
|
||||
====================================================
|
||||
|
||||
After clarification, produce a concise test plan containing:
|
||||
- Test name(s)
|
||||
- Given / When / Then for each test
|
||||
- Preconditions and seeded data
|
||||
- Assertions at each step (not just existence)
|
||||
- Setup and teardown strategy
|
||||
- Any helper abstractions you intend to create
|
||||
|
||||
WAIT for explicit approval before proceeding.
|
||||
|
||||
====================================================
|
||||
PHASE 5 — XCUITEST IMPLEMENTATION
|
||||
====================================================
|
||||
|
||||
Only after approval, write the XCUITest with these rules:
|
||||
|
||||
- Accessibility identifiers over labels
|
||||
- No element(boundBy:)
|
||||
- No firstMatch unless justified
|
||||
- Explicit waitForExistence timeouts
|
||||
- No sleep()
|
||||
- Assert state changes, not just visibility
|
||||
- Tests must be deterministic, isolated, and CI-safe
|
||||
- Extract helpers for navigation and setup
|
||||
- Comment assumptions inferred from screenshots
|
||||
|
||||
If any ambiguity remains, STOP and ask.
|
||||
|
||||
Begin Phase 1 once I provide the screenshots.
|
||||
```
|
||||
8
Scripts/.claude/settings.local.json
Normal file
8
Scripts/.claude/settings.local.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Skill(superpowers:brainstorming)",
|
||||
"Skill(superpowers:writing-plans)"
|
||||
]
|
||||
}
|
||||
}
|
||||
31
TO-DOS.md
31
TO-DOS.md
@@ -1,41 +1,10 @@
|
||||
```
|
||||
Read TO-DOS.md in full.
|
||||
Summarize:
|
||||
- Goal
|
||||
- Current Phase
|
||||
- Active Tasks
|
||||
Do not write code until this summary is complete.
|
||||
|
||||
/superpowers:brainstorm todo X <-- will create a design doc in the docs/plan
|
||||
|
||||
/superpowers:write-plan for the design created
|
||||
|
||||
/superpowers:subagent-driven-development
|
||||
|
||||
read docs/TEST_PLAN.md in full
|
||||
|
||||
Summarize:
|
||||
- Goal
|
||||
- Current Phase
|
||||
- Active Tasks
|
||||
Do not write code until this summary is complete.
|
||||
```
|
||||
|
||||
question: do we need sync schedules anymore in settings
|
||||
|
||||
// new dev
|
||||
- Notification reminders - "Your trip starts in 3 days"
|
||||
|
||||
// enhancements
|
||||
- Dark/light mode toggle along with system
|
||||
- Stadium notes - let users add personal notes/tips to stadiums they've visited
|
||||
sharing needs to completely overhauled. should be able to share a trip summary, achievements, progress. social media first
|
||||
- Achievements share says 2,026. Should be an option when share is hit of year or all time
|
||||
- if viewing a single sport share should share details regarding that sport only
|
||||
- need achievements for every supported league (how does this work with adding new sports in backed, might have to push with app update so if not achievements exist for that sport don’t show it as an option)
|
||||
- Share needs more styling, similar to onboarding
|
||||
- Ready to plan your trip has a summary, missing details should be in red
|
||||
|
||||
|
||||
// bugs
|
||||
- fucking game show at 7 am ... the fuck?
|
||||
|
||||
1291
docs/plans/2026-01-15-custom-itinerary-items-implementation.md
Normal file
1291
docs/plans/2026-01-15-custom-itinerary-items-implementation.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user