chore(copilot): add GitHub Copilot skills from awesome-copilot#69
Merged
Conversation
Add three skills to .github/skills/: - context-map: generate a file context map before making changes - conventional-commit: generate standardized commit messages - github-issues: create, update, and manage GitHub issues via MCP tools, with reference docs for search, sub-issues, dependencies, issue types, projects V2, issue fields, and images Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds .github/hooks/session-logger/ with hooks that log session start/end events and user prompt submissions to local JSON log files for audit and usage analytics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… switching - Add compound dev/test scenario tasks with split-pane terminal views - Each scenario first stops all running processes so terminals auto-close - Add (keep) variants for test scenarios to retain output for review - Fix terminal close behavior using process-group signals on the task shell - Update docs/development.md with VS Code tasks reference section Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…E tasks Each platform now has its own 4-terminal split view: backend + frontend + simulator/emulator + maestro. Maestro waits for the device/simulator to be booted before running tests, so the tasks can all start in parallel safely. Also fixes accessibility id selector in task-complete.yaml. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Set JAVA_HOME from SDKMAN in Maestro task commands so VS Code non-interactive shell can find Java (SDKMAN init scripts do not run in task shells). Replace xcrun simctl booted check with xcrun simctl get_app_container for iOS and adb pm list packages for Android so Maestro only starts once the app is actually installed, not just when the OS boots. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add .maestro/.env.example with MAESTRO_TEST_EMAIL and MAESTRO_TEST_PASSWORD placeholders. Add .maestro/.env.local to .gitignore so real credentials are never committed. Update iOS/Android E2E VS Code tasks to load .env.local and pass each var as --env flags to maestro test. Update docs with one-time setup instructions and Java LTS requirement. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
iOS simulator and Android emulator cannot reach localhost on the host machine. Use cap run --livereload --external so Capacitor sets server.url to the Mac LAN IP automatically. Add --host to Vite dev for those same scenarios so Vite binds to all interfaces and is reachable from the simulator/emulator. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
--external is not a valid cap run flag. Use --host with the LAN IP detected at runtime via ipconfig getifaddr so the simulator connects to the correct Vite dev server address. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The WebView in the simulator cannot reach localhost on the host machine. Add a simulator Vite mode (.env.simulator.local) that sets VITE_API_URL and VITE_APP_URL to the Mac LAN IP so all API calls route correctly. Add dev:simulator script to frontend/package.json. Update all simulator and emulator VS Code tasks to use dev:simulator instead of dev --host. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ackend The simulator WebView sends requests from http://10.0.0.x:3000 but the backend CORS allowlist only contained localhost. The live-reload origin was being blocked. Inject NATIVE_APP_ORIGINS dynamically in simulator backend tasks using the runtime LAN IP so credentials are accepted from the WebView origin. Also add --host to dev:simulator so Vite binds to all interfaces. Update backend .env.example with simulator setup instructions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
iOS simulator shares the Mac network stack so localhost resolves correctly - no LAN IP or NATIVE_APP_ORIGINS needed. Android emulator uses 10.0.2.2 as the host loopback alias. Add dev:android Vite mode with .env.android.local for Android tasks. Android backend tasks keep NATIVE_APP_ORIGINS with LAN IP for CORS. Rename dev:simulator -> dev:ios and .env.simulator -> .env.ios to match the platform naming convention used by .env.android. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Document platform-specific frontend env files (.env.ios, .env.android, .env.device) with a summary table. Update iOS simulator section to reflect live-reload workflow and explain why localhost works. Clarify NATIVE_APP_ORIGINS Android emulator note. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Prepend 'xcrun simctl shutdown all' to all three iOS Simulator tasks ([ios-sim], [ios-e2e], [ios-e2e-keep]) so stale simulator sessions are always cleaned up before cap run starts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Extract login steps into subflows/login.yaml. Update feed-load and task-complete to clearState + launchApp + runFlow the subflow so each flow is independently runnable and does not depend on auth.yaml having run first in the same session. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… routes Add e2e-suite.yaml orchestrator that runs all Maestro flows in order with a shared output.testUser context. setup.js creates a fresh pre-verified user via HTTP before flows run; teardown.js deletes it after. Credentials flow through output.testUser.email/password instead of static --env flags. - .maestro/e2e-suite.yaml — orchestrator: setup → auth → feed-load → task-complete → teardown - .maestro/scripts/setup.js — POST /api/test/create-user, store in output.testUser - .maestro/scripts/teardown.js — DELETE /api/test/delete-user - flows/auth.yaml + subflows/login.yaml — use output.testUser.email/password - backend/src/api/test.routes.ts — POST/DELETE /api/test/* (ENABLE_TEST_ROUTES guard) - backend/src/app.ts — register test routes when ENABLE_TEST_ROUTES=true - backend/.env.example — document ENABLE_TEST_ROUTES - .vscode/tasks.json — point Maestro tasks at e2e-suite.yaml Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…items After creating the test user, login via API to get a session cookie then POST /api/tasks to seed one task. Without this feed-load fails because a fresh account has no tasks and 'Mark complete' is never visible. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… button aria-label maps to iOS accessibilityLabel, but Maestro's id: selector matches accessibilityIdentifier (set by the HTML id attribute). Added id='mark-complete' / id='reopen-task' to the button in FeedItem.tsx and updated both Maestro flows to use id: 'mark-complete'. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…yLabel in WebView In a Capacitor WKWebView on iOS, aria-label maps to iOS accessibilityLabel which Maestro exposes as accessibilityText in the hierarchy. Maestro's id: selector matches accessibilityIdentifier (a different property). Switching to text: 'Mark complete' which matches accessibilityText/Label. Also reverts the unused id HTML attribute from FeedItem.tsx. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…s import
- task-complete.yaml: assert 'Reopen task' instead of 'Completed'
(CompletedSection is collapsed by default; the button aria-label flips
from 'Mark complete' to 'Reopen task' which is always visible)
- teardown: always-run guarantee via shell-level cleanup
* Added POST /api/test/cleanup endpoint (no email needed — deletes all
@ordrctrl.test users) to test.routes.ts
* All six Maestro VS Code tasks now append:
'; curl ... /api/test/cleanup' so cleanup fires even on flow failure
* teardown.js tolerates 404 (user already cleaned up)
- backend/src/app.ts: change static import of test.routes to dynamic
import() inside the ENABLE_TEST_ROUTES guard — prevents prisma/bcrypt
from loading in CI test workers and fixes the Vitest worker panic
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Merge auth.yaml + feed-load.yaml + task-complete.yaml into a single app-flow.yaml — one clearState, one login, all assertions in sequence. Eliminates redundant clearState+launchApp+login on every sub-flow. - Add integrations.yaml — tests Apple Calendar connect flow end-to-end: navigate settings → tap '+ Add account' → fill iCloud Email and App-Specific Password → assert 'Connected'. Gmail and Microsoft To Do are OAuth-redirect based (external browser) so not automatable with Maestro. - Update e2e-suite.yaml to reference the new two-flow structure: setup → app-flow → integrations → teardown. - Add APPLE_TEST_EMAIL / APPLE_TEST_PASSWORD to .env.example with instructions to generate an App-Specific Password. - Integration cleanup is handled by user deletion in teardown.js since Integration has onDelete: Cascade on the User relation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace hand-rolled orchestration with Maestro built-ins:
onFlowStart / onFlowComplete hooks (docs.maestro.dev/…/hooks)
- Both app-flow.yaml and integrations.yaml now declare:
onFlowStart: runScript: ../scripts/setup.js
onFlowComplete: runScript: ../scripts/teardown.js
- onFlowComplete is guaranteed to run even when the flow fails,
replacing the shell-level 'curl cleanup' workaround in VS Code tasks.
- teardown.js guards against output.testUser being undefined in case
onFlowStart itself fails.
config.yaml + executionOrder (docs.maestro.dev/…/sequential-execution)
- New .maestro/flows/config.yaml with executionOrder:
continueOnFailure: false
flowsOrder: [app-flow, integrations]
- Replaces e2e-suite.yaml orchestrator entirely.
- VS Code tasks now run: maestro test .maestro/flows/
Subflow directory move (docs.maestro.dev/…/nested-flows)
- Moved .maestro/flows/subflows/ → .maestro/subflows/ so Maestro's
workspace scan of .maestro/flows/ does not discover and attempt to
run login.yaml as a standalone test.
- Flows reference it via ../subflows/login.yaml.
Each flow is now fully self-contained and can be run in isolation:
maestro test .maestro/flows/app-flow.yaml
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ons flow AccountMenu trigger and all dropdown nav items now use onTouchEnd (with e.preventDefault()) as the primary handler alongside onClick fallback. In Capacitor WKWebView on iOS, the overflow-hidden container stack can absorb synthesised click events; touchend fires before the browser synthesises mousedown/click and is therefore reliable (same pattern already applied to the FeedItem checkbox). Also adds waitForAnimationToEnd after the Account menu tap in the Maestro integrations flow so the dropdown has time to render before Maestro searches for the 'Integrations' button. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds three GitHub Copilot CLI skills sourced from
awesome-copilot to
.github/skills/.Skills Added
context-mapconventional-commit|
|
github-issues| Create, update, and manage GitHub issues via MCP tools |The
github-issuesskill includes 8 reference files covering advanced search, sub-issues,dependencies, issue types, Projects V2, issue fields, and image embedding.
Notes
All skills are up-to-date with the upstream awesome-copilot repository as of installation.