@nguyenphp/antigravity-marketing 1.0.19 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +5 -61
  2. package/package.json +1 -1
  3. package/templates/.agent/agents/backend-specialist.md +0 -263
  4. package/templates/.agent/agents/database-architect.md +0 -226
  5. package/templates/.agent/agents/debugger.md +0 -225
  6. package/templates/.agent/agents/devops-engineer.md +0 -242
  7. package/templates/.agent/agents/frontend-specialist.md +0 -527
  8. package/templates/.agent/agents/game-developer.md +0 -162
  9. package/templates/.agent/agents/mobile-developer.md +0 -377
  10. package/templates/.agent/agents/penetration-tester.md +0 -188
  11. package/templates/.agent/agents/security-auditor.md +0 -170
  12. package/templates/.agent/agents/test-engineer.md +0 -158
  13. package/templates/.agent/skills/api-patterns/SKILL.md +0 -81
  14. package/templates/.agent/skills/api-patterns/api-style.md +0 -42
  15. package/templates/.agent/skills/api-patterns/auth.md +0 -24
  16. package/templates/.agent/skills/api-patterns/documentation.md +0 -26
  17. package/templates/.agent/skills/api-patterns/graphql.md +0 -41
  18. package/templates/.agent/skills/api-patterns/rate-limiting.md +0 -31
  19. package/templates/.agent/skills/api-patterns/response.md +0 -37
  20. package/templates/.agent/skills/api-patterns/rest.md +0 -40
  21. package/templates/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
  22. package/templates/.agent/skills/api-patterns/security-testing.md +0 -122
  23. package/templates/.agent/skills/api-patterns/trpc.md +0 -41
  24. package/templates/.agent/skills/api-patterns/versioning.md +0 -22
  25. package/templates/.agent/skills/app-builder/SKILL.md +0 -75
  26. package/templates/.agent/skills/app-builder/agent-coordination.md +0 -71
  27. package/templates/.agent/skills/app-builder/feature-building.md +0 -53
  28. package/templates/.agent/skills/app-builder/project-detection.md +0 -34
  29. package/templates/.agent/skills/app-builder/scaffolding.md +0 -118
  30. package/templates/.agent/skills/app-builder/tech-stack.md +0 -40
  31. package/templates/.agent/skills/app-builder/templates/SKILL.md +0 -39
  32. package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  33. package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  34. package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  35. package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  36. package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  37. package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  38. package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  39. package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
  40. package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
  41. package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
  42. package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
  43. package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  44. package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
  45. package/templates/.agent/skills/architecture/SKILL.md +0 -55
  46. package/templates/.agent/skills/architecture/context-discovery.md +0 -43
  47. package/templates/.agent/skills/architecture/examples.md +0 -94
  48. package/templates/.agent/skills/architecture/pattern-selection.md +0 -68
  49. package/templates/.agent/skills/architecture/patterns-reference.md +0 -50
  50. package/templates/.agent/skills/architecture/trade-off-analysis.md +0 -77
  51. package/templates/.agent/skills/bash-linux/SKILL.md +0 -199
  52. package/templates/.agent/skills/behavioral-modes/SKILL.md +0 -242
  53. package/templates/.agent/skills/clean-code/SKILL.md +0 -201
  54. package/templates/.agent/skills/code-review-checklist/SKILL.md +0 -109
  55. package/templates/.agent/skills/database-design/SKILL.md +0 -52
  56. package/templates/.agent/skills/database-design/database-selection.md +0 -43
  57. package/templates/.agent/skills/database-design/indexing.md +0 -39
  58. package/templates/.agent/skills/database-design/migrations.md +0 -48
  59. package/templates/.agent/skills/database-design/optimization.md +0 -36
  60. package/templates/.agent/skills/database-design/orm-selection.md +0 -30
  61. package/templates/.agent/skills/database-design/schema-design.md +0 -56
  62. package/templates/.agent/skills/database-design/scripts/schema_validator.py +0 -172
  63. package/templates/.agent/skills/deployment-procedures/SKILL.md +0 -241
  64. package/templates/.agent/skills/docker-expert/SKILL.md +0 -409
  65. package/templates/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  66. package/templates/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  67. package/templates/.agent/skills/game-development/SKILL.md +0 -167
  68. package/templates/.agent/skills/game-development/game-art/SKILL.md +0 -185
  69. package/templates/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  70. package/templates/.agent/skills/game-development/game-design/SKILL.md +0 -129
  71. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  72. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  73. package/templates/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  74. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  75. package/templates/.agent/skills/game-development/web-games/SKILL.md +0 -150
  76. package/templates/.agent/skills/lint-and-validate/SKILL.md +0 -45
  77. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -172
  78. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  79. package/templates/.agent/skills/mcp-builder/SKILL.md +0 -176
  80. package/templates/.agent/skills/nestjs-expert/SKILL.md +0 -552
  81. package/templates/.agent/skills/nextjs-best-practices/SKILL.md +0 -203
  82. package/templates/.agent/skills/nodejs-best-practices/SKILL.md +0 -333
  83. package/templates/.agent/skills/parallel-agents/SKILL.md +0 -175
  84. package/templates/.agent/skills/performance-profiling/SKILL.md +0 -143
  85. package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
  86. package/templates/.agent/skills/powershell-windows/SKILL.md +0 -167
  87. package/templates/.agent/skills/prisma-expert/SKILL.md +0 -355
  88. package/templates/.agent/skills/python-patterns/SKILL.md +0 -441
  89. package/templates/.agent/skills/react-patterns/SKILL.md +0 -198
  90. package/templates/.agent/skills/red-team-tactics/SKILL.md +0 -199
  91. package/templates/.agent/skills/server-management/SKILL.md +0 -161
  92. package/templates/.agent/skills/systematic-debugging/SKILL.md +0 -109
  93. package/templates/.agent/skills/tdd-workflow/SKILL.md +0 -149
  94. package/templates/.agent/skills/testing-patterns/SKILL.md +0 -178
  95. package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
  96. package/templates/.agent/skills/typescript-expert/SKILL.md +0 -429
  97. package/templates/.agent/skills/vue-expert/SKILL.md +0 -374
  98. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
  99. package/templates/.agent/skills/vulnerability-scanner/checklists.md +0 -121
  100. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
  101. package/templates/.agent/skills/webapp-testing/SKILL.md +0 -187
  102. package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
  103. package/templates/.agent/workflows/debug.md +0 -103
  104. package/templates/.agent/workflows/deploy.md +0 -176
  105. package/templates/.agent/workflows/enhance.md +0 -63
  106. package/templates/.agent/workflows/test.md +0 -144
@@ -1,178 +0,0 @@
1
- ---
2
- name: testing-patterns
3
- description: Testing patterns and principles. Unit, integration, mocking strategies.
4
- allowed-tools: Read, Write, Edit, Glob, Grep, Bash
5
- ---
6
-
7
- # Testing Patterns
8
-
9
- > Principles for reliable test suites.
10
-
11
- ---
12
-
13
- ## 1. Testing Pyramid
14
-
15
- ```
16
- /\ E2E (Few)
17
- / \ Critical flows
18
- /----\
19
- / \ Integration (Some)
20
- /--------\ API, DB queries
21
- / \
22
- /------------\ Unit (Many)
23
- Functions, classes
24
- ```
25
-
26
- ---
27
-
28
- ## 2. AAA Pattern
29
-
30
- | Step | Purpose |
31
- |------|---------|
32
- | **Arrange** | Set up test data |
33
- | **Act** | Execute code under test |
34
- | **Assert** | Verify outcome |
35
-
36
- ---
37
-
38
- ## 3. Test Type Selection
39
-
40
- ### When to Use Each
41
-
42
- | Type | Best For | Speed |
43
- |------|----------|-------|
44
- | **Unit** | Pure functions, logic | Fast (<50ms) |
45
- | **Integration** | API, DB, services | Medium |
46
- | **E2E** | Critical user flows | Slow |
47
-
48
- ---
49
-
50
- ## 4. Unit Test Principles
51
-
52
- ### Good Unit Tests
53
-
54
- | Principle | Meaning |
55
- |-----------|---------|
56
- | Fast | < 100ms each |
57
- | Isolated | No external deps |
58
- | Repeatable | Same result always |
59
- | Self-checking | No manual verification |
60
- | Timely | Written with code |
61
-
62
- ### What to Unit Test
63
-
64
- | Test | Don't Test |
65
- |------|------------|
66
- | Business logic | Framework code |
67
- | Edge cases | Third-party libs |
68
- | Error handling | Simple getters |
69
-
70
- ---
71
-
72
- ## 5. Integration Test Principles
73
-
74
- ### What to Test
75
-
76
- | Area | Focus |
77
- |------|-------|
78
- | API endpoints | Request/response |
79
- | Database | Queries, transactions |
80
- | External services | Contracts |
81
-
82
- ### Setup/Teardown
83
-
84
- | Phase | Action |
85
- |-------|--------|
86
- | Before All | Connect resources |
87
- | Before Each | Reset state |
88
- | After Each | Clean up |
89
- | After All | Disconnect |
90
-
91
- ---
92
-
93
- ## 6. Mocking Principles
94
-
95
- ### When to Mock
96
-
97
- | Mock | Don't Mock |
98
- |------|------------|
99
- | External APIs | The code under test |
100
- | Database (unit) | Simple dependencies |
101
- | Time/random | Pure functions |
102
- | Network | In-memory stores |
103
-
104
- ### Mock Types
105
-
106
- | Type | Use |
107
- |------|-----|
108
- | Stub | Return fixed values |
109
- | Spy | Track calls |
110
- | Mock | Set expectations |
111
- | Fake | Simplified implementation |
112
-
113
- ---
114
-
115
- ## 7. Test Organization
116
-
117
- ### Naming
118
-
119
- | Pattern | Example |
120
- |---------|---------|
121
- | Should behavior | "should return error when..." |
122
- | When condition | "when user not found..." |
123
- | Given-when-then | "given X, when Y, then Z" |
124
-
125
- ### Grouping
126
-
127
- | Level | Use |
128
- |-------|-----|
129
- | describe | Group related tests |
130
- | it/test | Individual case |
131
- | beforeEach | Common setup |
132
-
133
- ---
134
-
135
- ## 8. Test Data
136
-
137
- ### Strategies
138
-
139
- | Approach | Use |
140
- |----------|-----|
141
- | Factories | Generate test data |
142
- | Fixtures | Predefined datasets |
143
- | Builders | Fluent object creation |
144
-
145
- ### Principles
146
-
147
- - Use realistic data
148
- - Randomize non-essential values (faker)
149
- - Share common fixtures
150
- - Keep data minimal
151
-
152
- ---
153
-
154
- ## 9. Best Practices
155
-
156
- | Practice | Why |
157
- |----------|-----|
158
- | One assert per test | Clear failure reason |
159
- | Independent tests | No order dependency |
160
- | Fast tests | Run frequently |
161
- | Descriptive names | Self-documenting |
162
- | Clean up | Avoid side effects |
163
-
164
- ---
165
-
166
- ## 10. Anti-Patterns
167
-
168
- | ❌ Don't | ✅ Do |
169
- |----------|-------|
170
- | Test implementation | Test behavior |
171
- | Duplicate test code | Use factories |
172
- | Complex test setup | Simplify or split |
173
- | Ignore flaky tests | Fix root cause |
174
- | Skip cleanup | Reset state |
175
-
176
- ---
177
-
178
- > **Remember:** Tests are documentation. If someone can't understand what the code does from the tests, rewrite them.
@@ -1,219 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Test Runner - Unified test execution and coverage reporting
4
- Runs tests and generates coverage report based on project type.
5
-
6
- Usage:
7
- python test_runner.py <project_path> [--coverage]
8
-
9
- Supports:
10
- - Node.js: npm test, jest, vitest
11
- - Python: pytest, unittest
12
- """
13
-
14
- import subprocess
15
- import sys
16
- import json
17
- from pathlib import Path
18
- from datetime import datetime
19
-
20
- # Fix Windows console encoding
21
- try:
22
- sys.stdout.reconfigure(encoding='utf-8', errors='replace')
23
- except:
24
- pass
25
-
26
-
27
- def detect_test_framework(project_path: Path) -> dict:
28
- """Detect test framework and commands."""
29
- result = {
30
- "type": "unknown",
31
- "framework": None,
32
- "cmd": None,
33
- "coverage_cmd": None
34
- }
35
-
36
- # Node.js project
37
- package_json = project_path / "package.json"
38
- if package_json.exists():
39
- result["type"] = "node"
40
- try:
41
- pkg = json.loads(package_json.read_text(encoding='utf-8'))
42
- scripts = pkg.get("scripts", {})
43
- deps = {**pkg.get("dependencies", {}), **pkg.get("devDependencies", {})}
44
-
45
- # Check for test script
46
- if "test" in scripts:
47
- result["framework"] = "npm test"
48
- result["cmd"] = ["npm", "test"]
49
-
50
- # Try to detect specific framework for coverage
51
- if "vitest" in deps:
52
- result["framework"] = "vitest"
53
- result["coverage_cmd"] = ["npx", "vitest", "run", "--coverage"]
54
- elif "jest" in deps:
55
- result["framework"] = "jest"
56
- result["coverage_cmd"] = ["npx", "jest", "--coverage"]
57
- elif "vitest" in deps:
58
- result["framework"] = "vitest"
59
- result["cmd"] = ["npx", "vitest", "run"]
60
- result["coverage_cmd"] = ["npx", "vitest", "run", "--coverage"]
61
- elif "jest" in deps:
62
- result["framework"] = "jest"
63
- result["cmd"] = ["npx", "jest"]
64
- result["coverage_cmd"] = ["npx", "jest", "--coverage"]
65
-
66
- except:
67
- pass
68
-
69
- # Python project
70
- if (project_path / "pyproject.toml").exists() or (project_path / "requirements.txt").exists():
71
- result["type"] = "python"
72
- result["framework"] = "pytest"
73
- result["cmd"] = ["python", "-m", "pytest", "-v"]
74
- result["coverage_cmd"] = ["python", "-m", "pytest", "--cov", "--cov-report=term-missing"]
75
-
76
- return result
77
-
78
-
79
- def run_tests(cmd: list, cwd: Path) -> dict:
80
- """Run tests and return results."""
81
- result = {
82
- "passed": False,
83
- "output": "",
84
- "error": "",
85
- "tests_run": 0,
86
- "tests_passed": 0,
87
- "tests_failed": 0
88
- }
89
-
90
- try:
91
- proc = subprocess.run(
92
- cmd,
93
- cwd=str(cwd),
94
- capture_output=True,
95
- text=True,
96
- encoding='utf-8',
97
- errors='replace',
98
- timeout=300 # 5 min timeout for tests
99
- )
100
-
101
- result["output"] = proc.stdout[:3000] if proc.stdout else ""
102
- result["error"] = proc.stderr[:500] if proc.stderr else ""
103
- result["passed"] = proc.returncode == 0
104
-
105
- # Try to parse test counts from output
106
- output = proc.stdout or ""
107
-
108
- # Jest/Vitest pattern: "Tests: X passed, Y failed, Z total"
109
- if "passed" in output.lower() and "failed" in output.lower():
110
- import re
111
- match = re.search(r'(\d+)\s+passed', output, re.IGNORECASE)
112
- if match:
113
- result["tests_passed"] = int(match.group(1))
114
- match = re.search(r'(\d+)\s+failed', output, re.IGNORECASE)
115
- if match:
116
- result["tests_failed"] = int(match.group(1))
117
- result["tests_run"] = result["tests_passed"] + result["tests_failed"]
118
-
119
- # Pytest pattern: "X passed, Y failed"
120
- if "pytest" in str(cmd):
121
- import re
122
- match = re.search(r'(\d+)\s+passed', output)
123
- if match:
124
- result["tests_passed"] = int(match.group(1))
125
- match = re.search(r'(\d+)\s+failed', output)
126
- if match:
127
- result["tests_failed"] = int(match.group(1))
128
- result["tests_run"] = result["tests_passed"] + result["tests_failed"]
129
-
130
- except FileNotFoundError:
131
- result["error"] = f"Command not found: {cmd[0]}"
132
- except subprocess.TimeoutExpired:
133
- result["error"] = "Timeout after 300s"
134
- except Exception as e:
135
- result["error"] = str(e)
136
-
137
- return result
138
-
139
-
140
- def main():
141
- project_path = Path(sys.argv[1] if len(sys.argv) > 1 else ".").resolve()
142
- with_coverage = "--coverage" in sys.argv
143
-
144
- print(f"\n{'='*60}")
145
- print(f"[TEST RUNNER] Unified Test Execution")
146
- print(f"{'='*60}")
147
- print(f"Project: {project_path}")
148
- print(f"Coverage: {'enabled' if with_coverage else 'disabled'}")
149
- print(f"Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
150
-
151
- # Detect test framework
152
- test_info = detect_test_framework(project_path)
153
- print(f"Type: {test_info['type']}")
154
- print(f"Framework: {test_info['framework']}")
155
- print("-"*60)
156
-
157
- if not test_info["cmd"]:
158
- print("No test framework found for this project.")
159
- output = {
160
- "script": "test_runner",
161
- "project": str(project_path),
162
- "type": test_info["type"],
163
- "framework": None,
164
- "passed": True,
165
- "message": "No tests configured"
166
- }
167
- print(json.dumps(output, indent=2))
168
- sys.exit(0)
169
-
170
- # Choose command
171
- cmd = test_info["coverage_cmd"] if with_coverage and test_info["coverage_cmd"] else test_info["cmd"]
172
-
173
- print(f"Running: {' '.join(cmd)}")
174
- print("-"*60)
175
-
176
- # Run tests
177
- result = run_tests(cmd, project_path)
178
-
179
- # Print output (truncated)
180
- if result["output"]:
181
- lines = result["output"].split("\n")
182
- for line in lines[:30]:
183
- print(line)
184
- if len(lines) > 30:
185
- print(f"... ({len(lines) - 30} more lines)")
186
-
187
- # Summary
188
- print("\n" + "="*60)
189
- print("SUMMARY")
190
- print("="*60)
191
-
192
- if result["passed"]:
193
- print("[PASS] All tests passed")
194
- else:
195
- print("[FAIL] Some tests failed")
196
- if result["error"]:
197
- print(f"Error: {result['error'][:200]}")
198
-
199
- if result["tests_run"] > 0:
200
- print(f"Tests: {result['tests_run']} total, {result['tests_passed']} passed, {result['tests_failed']} failed")
201
-
202
- output = {
203
- "script": "test_runner",
204
- "project": str(project_path),
205
- "type": test_info["type"],
206
- "framework": test_info["framework"],
207
- "tests_run": result["tests_run"],
208
- "tests_passed": result["tests_passed"],
209
- "tests_failed": result["tests_failed"],
210
- "passed": result["passed"]
211
- }
212
-
213
- print("\n" + json.dumps(output, indent=2))
214
-
215
- sys.exit(0 if result["passed"] else 1)
216
-
217
-
218
- if __name__ == "__main__":
219
- main()