Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ on:
pull_request:
branches: [main]
paths:
- 'skill/scripts/**/*.py'
- 'ios-simulator-skill/scripts/**/*.py'
- 'pyproject.toml'
- '.github/workflows/lint.yml'

push:
branches: [main]
paths:
- 'skill/scripts/**/*.py'
- 'ios-simulator-skill/scripts/**/*.py'

jobs:
lint:
Expand All @@ -36,12 +36,12 @@ jobs:
- name: Run Black (formatter check)
run: |
echo "🎨 Checking code formatting with Black..."
black --check --diff skill/scripts/
black --check --diff ios-simulator-skill/scripts/

- name: Run Ruff (linter)
run: |
echo "πŸ” Linting code with Ruff..."
ruff check skill/scripts/
ruff check ios-simulator-skill/scripts/

- name: Summary
if: success()
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,14 @@ jobs:

- name: Validate skill structure
run: |
echo "Validating skill/ directory structure..."
test -f skill/SKILL.md || { echo "ERROR: skill/SKILL.md not found"; exit 1; }
test -d skill/scripts || { echo "ERROR: skill/scripts directory not found"; exit 1; }
test -d skill/examples || { echo "ERROR: skill/examples directory not found"; exit 1; }
echo "Validating ios-simulator-skill/ directory structure..."
test -f ios-simulator-skill/SKILL.md || { echo "ERROR: ios-simulator-skill/SKILL.md not found"; exit 1; }
test -d ios-simulator-skill/scripts || { echo "ERROR: ios-simulator-skill/scripts directory not found"; exit 1; }
echo "βœ… Skill structure validated successfully"

- name: Create skill package
run: |
cd skill
cd ios-simulator-skill
zip -r ../ios-simulator-skill-${{ github.ref_name }}.zip . \
-x "*.pyc" \
-x "__pycache__/*" \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/validate-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:

- name: Check SKILL.md for version reference
run: |
if ! grep -q "${{ steps.version.outputs.number }}" skill/SKILL.md; then
if ! grep -q "${{ steps.version.outputs.number }}" ios-simulator-skill/SKILL.md; then
echo "⚠️ WARNING: Version ${{ steps.version.outputs.number }} not mentioned in SKILL.md"
echo "Consider adding version info to the SKILL.md frontmatter or description"
else
Expand Down
60 changes: 28 additions & 32 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,37 +16,33 @@ iOS Simulator Skill is a production-ready Agent Skill providing 21 scripts for i
## Project Structure

```
ios-simulator-skill/
β”œβ”€β”€ skill/ # Distributable package
β”‚ β”œβ”€β”€ SKILL.md # Entry point (table of contents)
β”‚ β”œβ”€β”€ CLAUDE.md # Developer guide
β”‚ β”œβ”€β”€ README.md # User-facing overview
β”‚ β”œβ”€β”€ scripts/ # 21 production scripts
β”‚ β”‚ β”œβ”€β”€ build_and_test.py
β”‚ β”‚ β”œβ”€β”€ xcode/ # Xcode integration module
β”‚ β”‚ β”œβ”€β”€ log_monitor.py
β”‚ β”‚ β”œβ”€β”€ screen_mapper.py
β”‚ β”‚ β”œβ”€β”€ navigator.py
β”‚ β”‚ β”œβ”€β”€ gesture.py
β”‚ β”‚ β”œβ”€β”€ keyboard.py
β”‚ β”‚ β”œβ”€β”€ app_launcher.py
β”‚ β”‚ β”œβ”€β”€ accessibility_audit.py
β”‚ β”‚ β”œβ”€β”€ visual_diff.py
β”‚ β”‚ β”œβ”€β”€ test_recorder.py
β”‚ β”‚ β”œβ”€β”€ app_state_capture.py
β”‚ β”‚ β”œβ”€β”€ clipboard.py
β”‚ β”‚ β”œβ”€β”€ status_bar.py
β”‚ β”‚ β”œβ”€β”€ push_notification.py
β”‚ β”‚ β”œβ”€β”€ privacy_manager.py
β”‚ β”‚ β”œβ”€β”€ simctl_boot.py
β”‚ β”‚ β”œβ”€β”€ simctl_shutdown.py
β”‚ β”‚ β”œβ”€β”€ simctl_create.py
β”‚ β”‚ β”œβ”€β”€ simctl_delete.py
β”‚ β”‚ β”œβ”€β”€ simctl_erase.py
β”‚ β”‚ β”œβ”€β”€ sim_health_check.sh
β”‚ β”‚ └── common/ # Shared utilities
β”‚ β”œβ”€β”€ examples/
β”‚ └── references/
ios-simulator-skill/ # Repository root
β”œβ”€β”€ ios-simulator-skill/ # Distributable package
β”‚ β”œβ”€β”€ SKILL.md # Entry point (table of contents)
β”‚ └── scripts/ # 21 production scripts
β”‚ β”œβ”€β”€ build_and_test.py
β”‚ β”œβ”€β”€ xcode/ # Xcode integration module
β”‚ β”œβ”€β”€ log_monitor.py
β”‚ β”œβ”€β”€ screen_mapper.py
β”‚ β”œβ”€β”€ navigator.py
β”‚ β”œβ”€β”€ gesture.py
β”‚ β”œβ”€β”€ keyboard.py
β”‚ β”œβ”€β”€ app_launcher.py
β”‚ β”œβ”€β”€ accessibility_audit.py
β”‚ β”œβ”€β”€ visual_diff.py
β”‚ β”œβ”€β”€ test_recorder.py
β”‚ β”œβ”€β”€ app_state_capture.py
β”‚ β”œβ”€β”€ clipboard.py
β”‚ β”œβ”€β”€ status_bar.py
β”‚ β”œβ”€β”€ push_notification.py
β”‚ β”œβ”€β”€ privacy_manager.py
β”‚ β”œβ”€β”€ simctl_boot.py
β”‚ β”œβ”€β”€ simctl_shutdown.py
β”‚ β”œβ”€β”€ simctl_create.py
β”‚ β”œβ”€β”€ simctl_delete.py
β”‚ β”œβ”€β”€ simctl_erase.py
β”‚ β”œβ”€β”€ sim_health_check.sh
β”‚ └── common/ # Shared utilities
β”œβ”€β”€ .github/workflows/
β”œβ”€β”€ pyproject.toml
└── README.md
Expand Down Expand Up @@ -197,7 +193,7 @@ New scripts should:
1. Update version in SKILL.md frontmatter, pyproject.toml
2. Verify CI passes (Black, Ruff)
3. Create GitHub release with vX.X.X tag
4. Attach zipped skill/ directory
4. Attach zipped ios-simulator-skill/ directory

## Design Philosophy

Expand Down
60 changes: 28 additions & 32 deletions DEV.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ This is the **development repository** for the iOS Simulator Skill. Users should

## What is This?

A production-ready Claude Code skill providing 12 scripts for iOS simulator testing and automation with:
A production-ready Claude Code skill providing 21+ scripts for iOS simulator testing and automation with:
- πŸ—οΈ **Ultra token-efficient build automation** with progressive disclosure
- πŸ” **Real-time log monitoring** with intelligent filtering
- 🎯 **Accessibility-driven navigation** (semantic, not pixel-based)
- β™Ώ **WCAG accessibility auditing**
- πŸ“Έ **Visual regression testing**
- 🎬 **Test recording and documentation**

**Total:** ~5,200 lines of production Python code
**Total:** ~10,000 lines of production Python code

## For Users: Installation

Expand All @@ -28,7 +28,7 @@ unzip skill.zip -d ~/.claude/skills/ios-simulator-skill
# Restart Claude Code
```

See [`skill/README.md`](skill/README.md) for usage documentation.
See [`ios-simulator-skill/SKILL.md`](ios-simulator-skill/SKILL.md) for usage documentation.

## For Contributors: Development Setup

Expand Down Expand Up @@ -59,11 +59,11 @@ pre-commit run --all-files
### Development Workflow

```bash
# Make changes to skill/scripts/
vim skill/scripts/build_and_test.py
# Make changes to ios-simulator-skill/scripts/
vim ios-simulator-skill/scripts/build_and_test.py

# Hooks run automatically on commit (Black, Ruff, mypy)
git add skill/scripts/build_and_test.py
git add ios-simulator-skill/scripts/build_and_test.py
git commit -m "feat: improve build error reporting"

# Push and create PR
Expand All @@ -73,7 +73,7 @@ git push origin feature-branch

### Linting Tools

All code in `skill/scripts/` is checked with **STRICT** configuration:
All code in `ios-simulator-skill/scripts/` is checked with **STRICT** configuration:

- **Black** - Auto-formats to consistent style (line length: 100)
- **Ruff** - Fast linter catching bugs, style issues, unused imports
Expand All @@ -85,13 +85,13 @@ Configuration in [`pyproject.toml`](pyproject.toml).

```bash
# Format code
black skill/scripts/
black ios-simulator-skill/scripts/

# Lint code (with auto-fix)
ruff check --fix skill/scripts/
ruff check --fix ios-simulator-skill/scripts/

# Type check
mypy skill/scripts/
mypy ios-simulator-skill/scripts/

# Or run all checks
pre-commit run --all-files
Expand All @@ -100,23 +100,19 @@ pre-commit run --all-files
### Repository Structure

```
ios-simulator-skill/
β”œβ”€β”€ skill/ # 🎁 What users get (packaged in releases)
β”‚ β”œβ”€β”€ SKILL.md # Entry point with YAML frontmatter
β”‚ β”œβ”€β”€ CLAUDE.md # Developer guide for Claude
β”‚ β”œβ”€β”€ README.md # User-facing documentation
β”‚ β”œβ”€β”€ scripts/ # 12 production scripts (~5,200 lines)
β”‚ β”œβ”€β”€ references/ # Deep documentation
β”‚ └── examples/ # Usage examples
ios-simulator-skill/ # Repository root
β”œβ”€β”€ ios-simulator-skill/ # Distributable package (packaged in releases)
β”‚ β”œβ”€β”€ SKILL.md # Entry point with YAML frontmatter
β”‚ └── scripts/ # 21+ production scripts (~10,000 lines)
β”‚
β”œβ”€β”€ .github/workflows/ # CI/CD automation
β”‚ β”œβ”€β”€ release.yml # Auto-package skill/ on release
β”‚ β”œβ”€β”€ lint.yml # Run linters on PRs
β”‚ └── validate-version.yml # Ensure version consistency
β”œβ”€β”€ .github/workflows/ # CI/CD automation
β”‚ β”œβ”€β”€ release.yml # Auto-package on release
β”‚ β”œβ”€β”€ lint.yml # Run linters on PRs
β”‚ └── validate-version.yml # Ensure version consistency
β”‚
β”œβ”€β”€ pyproject.toml # Linting configuration
β”œβ”€β”€ .pre-commit-config.yaml # Git hooks
└── README.md # This file (dev guide)
β”œβ”€β”€ pyproject.toml # Linting configuration
β”œβ”€β”€ .pre-commit-config.yaml # Git hooks
└── README.md # This file (dev guide)
```

### Creating a Release
Expand Down Expand Up @@ -154,21 +150,21 @@ git push origin v1.1.0
open -a Simulator

# Run health check
bash skill/scripts/sim_health_check.sh
bash ios-simulator-skill/scripts/sim_health_check.sh

# Test individual scripts
python skill/scripts/build_and_test.py --help
python skill/scripts/screen_mapper.py
python ios-simulator-skill/scripts/build_and_test.py --help
python ios-simulator-skill/scripts/screen_mapper.py

# Test skill installation
mkdir -p ~/.claude/skills/ios-simulator-skill-test
cp -r skill/* ~/.claude/skills/ios-simulator-skill-test/
cp -r ios-simulator-skill/* ~/.claude/skills/ios-simulator-skill-test/
# Restart Claude Code and verify
```

## Code Style Guidelines

From [`CLAUDE.md`](skill/CLAUDE.md):
From [`CLAUDE.md`](CLAUDE.md):

- **Jackson's Law**: Minimal code to solve the problem
- **Guard clauses**: Validate inputs first, happy path last
Expand All @@ -182,7 +178,7 @@ From [`CLAUDE.md`](skill/CLAUDE.md):

### release.yml
- **Trigger:** When release is published
- **Actions:** Validate structure β†’ Zip skill/ β†’ Upload to release
- **Actions:** Validate structure β†’ Zip ios-simulator-skill/ β†’ Upload to release

### lint.yml
- **Trigger:** On PR to main (for Python files)
Expand All @@ -207,6 +203,6 @@ MIT License - see [LICENSE.md](LICENSE.md)

## Questions?

- **Usage questions**: See [skill/README.md](skill/README.md)
- **Usage questions**: See [ios-simulator-skill/SKILL.md](ios-simulator-skill/SKILL.md)
- **Bug reports**: [Open an issue](https://github.com/YOUR_USERNAME/ios-simulator-skill/issues)
- **Development questions**: [Open a discussion](https://github.com/YOUR_USERNAME/ios-simulator-skill/discussions)
Loading