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: 8 additions & 0 deletions .gemini/skills/correct-skill-name/.skilz-manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
installed_at: '2026-01-09T19:30:42+00:00'
skill_id: local/correct-skill-name
git_repo: local
skill_path: /private/var/folders/tm/chrvt43s3rbdld20ghw1qtc40000gn/T/tmp3nhyprfn/wrong-name-skill
git_sha: local
skilz_version: 1.7.0
install_mode: copy
canonical_path: null
2 changes: 2 additions & 0 deletions .gemini/skills/correct-skill-name/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
name: correct-skill-name
description: Test skill
8 changes: 8 additions & 0 deletions .gemini/skills/test-skill/.skilz-manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
installed_at: '2026-01-09T19:32:34+00:00'
skill_id: git/test-skill
git_repo: https://github.com/test/repo
skill_path: /private/var/folders/tm/chrvt43s3rbdld20ghw1qtc40000gn/T/tmpk8w9kl2f/test-skill
git_sha: local
skilz_version: 1.7.0
install_mode: copy
canonical_path: null
2 changes: 2 additions & 0 deletions .gemini/skills/test-skill/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
name: test-skill
description: Test skill
2 changes: 2 additions & 0 deletions .speckit/features/01-core-installer/specify.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ Implement the core `skilz install` command that:
- Re-running install for same skill+SHA is a no-op
- If SHA differs from manifest, reinstall with new version
- Clear output indicating "already installed" vs "updated"
- Directory name validation only applies to permanent skill directories, not temp git clone directories

## Functional Requirements

Expand Down Expand Up @@ -99,6 +100,7 @@ Implement the core `skilz install` command that:
- SHA not found: show SHA and suggest checking registry
- Permission denied: show path and suggest permissions fix
- Registry not found: show expected paths
- Directory name validation: only warn for permanent skill directories, not temp git clone directories

## Non-Functional Requirements

Expand Down
15 changes: 10 additions & 5 deletions .speckit/features/10-universal-agent-enhancements/specify.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,15 +141,18 @@ cat AGENTS.md | grep web-scraper # ✅ Referenced

### US-3: Config File Override

**As a** power user testing skill installations
**I want to** control which config file gets updated
**As a** power user testing skill installations
**I want to** control which config file gets updated
**So that** I can test without breaking my main setup

**Acceptance Criteria:**
```bash
# Test installation with custom config
# Test installation with custom config (registry install)
skilz install test-skill --agent universal --project --config TEST.md

# Test git installation with custom config
skilz install https://github.com/owner/repo --agent universal --project --config TEST.md

# Verify only TEST.md was modified
cat TEST.md | grep test-skill # ✅ Referenced
cat AGENTS.md | grep test-skill # ❌ Not modified
Expand Down Expand Up @@ -298,9 +301,11 @@ def sync_skill_to_configs(
### Phase 10d: Config Sync Enhancement
- [ ] Add `target_files` parameter to `sync_skill_to_configs()`
- [ ] Update sync logic to use custom files when provided
- [ ] Add `config_file` parameter to `install_from_git()` function
- [ ] Pass `config_file` through git install flow to local install
- [ ] Preserve backward compatibility (default behavior unchanged)
- **Files:** `src/skilz/config_sync.py`, `tests/test_config_sync.py`
- **Effort:** 2 hours
- **Files:** `src/skilz/config_sync.py`, `src/skilz/git_install.py`, `tests/test_config_sync.py`
- **Effort:** 3 hours

### Phase 10e: Integration Testing
- [ ] Test: Universal project install creates AGENTS.md
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,12 @@ task test:fast # Run tests without verbose output
task coverage # Run tests with coverage report
task coverage:html # Generate HTML coverage report

# E2E Testing
./scripts/end_to_end.sh # Full E2E test suite
./scripts/test_rest_marketplace_e2e.sh # Live API testing
./scripts/test_api_integration.sh # API integration tests
./scripts/test_bug_fixes_e2e.sh # Bug fix regression tests

# Code Quality
task lint # Run linter (ruff)
task lint:fix # Auto-fix linting issues
Expand Down
50 changes: 50 additions & 0 deletions docs/DEPLOY_PYPI.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,35 @@ The following tools are required (install globally or in your environment):
pip install build twine
```

### 2. E2E Testing

Before deploying, run the comprehensive E2E test suite to ensure all functionality works:

```bash
# Run full E2E test suite (tests all major features)
./scripts/end_to_end.sh

# Run API integration tests (tests marketplace endpoints)
./scripts/test_api_integration.sh

# Run REST marketplace tests (tests live API with real data)
./scripts/test_rest_marketplace_e2e.sh

# Run bug fix regression tests (tests recent fixes)
./scripts/test_bug_fixes_e2e.sh
```

**E2E Test Coverage:**
- ✅ Marketplace ID installation (`skilz install owner_repo/skill`)
- ✅ Git URL installation (`skilz install https://github.com/...`)
- ✅ Local file installation (`skilz install -f path/to/skill`)
- ✅ All supported agents (Claude, OpenCode, Gemini, Codex, Copilot, Universal)
- ✅ Project-level installations (`--project` flag)
- ✅ Custom config file targeting (`--config FILE`)
- ✅ List, remove, search, and visit commands
- ✅ API endpoint validation and error handling
- ✅ Regression testing for recent bug fixes

### 2. PyPI Account Setup

1. **Create account**: https://pypi.org/account/register/
Expand Down Expand Up @@ -57,6 +86,27 @@ password = pypi-YOUR_TESTPYPI_TOKEN_HERE
chmod 600 ~/.pypirc
```

## Quality Assurance

### Testing Strategy

Skilz uses a comprehensive multi-layer testing approach:

1. **Unit Tests**: 633+ tests covering individual functions and modules
2. **Integration Tests**: API client and config sync testing
3. **E2E Tests**: Real-world scenario testing with isolated environments
4. **Regression Tests**: Bug fix validation with before/after testing

### Pre-Deployment Checklist

- [ ] `task check` passes (lint + typecheck + test)
- [ ] `./scripts/end_to_end.sh` passes (full feature test)
- [ ] `./scripts/test_rest_marketplace_e2e.sh` passes (live API test)
- [ ] `./scripts/test_bug_fixes_e2e.sh` passes (regression test)
- [ ] Version updated in `src/skilz/__init__.py` and `pyproject.toml`
- [ ] CHANGELOG.md updated with release notes
- [ ] GitHub release created and tagged

## Release Process

### Quick Release (All-in-One)
Expand Down
Loading