izanagi-ai 2.0.0
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.
- package/AGENTS.md +53 -0
- package/CHANGELOG.md +198 -0
- package/LICENSE +21 -0
- package/README.md +96 -0
- package/ROADMAP.md +131 -0
- package/RULES.md +202 -0
- package/SYSTEM.md +201 -0
- package/agents/INDEX.md +40 -0
- package/agents/architect-agent.json +15 -0
- package/agents/bug-hunter-agent.json +14 -0
- package/agents/database-agent.json +14 -0
- package/agents/devops-agent.json +15 -0
- package/agents/docs-agent.json +15 -0
- package/agents/pm-agent.json +14 -0
- package/agents/professor-agent.json +15 -0
- package/agents/security-agent.json +14 -0
- package/agents/senior-engineer-agent.json +16 -0
- package/agents/techlead-agent.json +15 -0
- package/architecture/clean-architecture.md +98 -0
- package/architecture/cqrs-specialist.md +102 -0
- package/architecture/ddd-specialist.md +97 -0
- package/architecture/event-driven-architect.md +79 -0
- package/architecture/hexagonal-architecture.md +96 -0
- package/architecture/microservices-expert.md +83 -0
- package/architecture/monolith-expert.md +67 -0
- package/architecture/repository-pattern.md +73 -0
- package/architecture/unit-of-work.md +92 -0
- package/backend/README.md +29 -0
- package/bin/nexus.js +8 -0
- package/core/compression-engine.md +194 -0
- package/core/context-engine.md +239 -0
- package/core/decision-engine.md +377 -0
- package/core/evolution-engine.md +169 -0
- package/core/planning-engine.md +201 -0
- package/core/quality-gates.md +233 -0
- package/core/reflection-engine.md +182 -0
- package/core/skill-resolver.json +169 -0
- package/core/token-manager.md +152 -0
- package/database/database-engineer.md +244 -0
- package/database/mysql-specialist.md +61 -0
- package/database/postgresql-specialist.md +70 -0
- package/database/redis-specialist.md +73 -0
- package/database/sql-optimizer.md +95 -0
- package/database/sqlserver-specialist.md +69 -0
- package/devops/ci-cd-specialist.md +101 -0
- package/devops/devops-engineer.md +358 -0
- package/devops/docker-expert.md +105 -0
- package/devops/git-expert.md +76 -0
- package/devops/git-flow-specialist.md +71 -0
- package/devops/kubernetes-specialist.md +84 -0
- package/devops/linux-specialist.md +82 -0
- package/devops/windows-specialist.md +43 -0
- package/dist/cli/commands/compile.d.ts +2 -0
- package/dist/cli/commands/compile.d.ts.map +1 -0
- package/dist/cli/commands/compile.js +44 -0
- package/dist/cli/commands/compile.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +88 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +26 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +2 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +50 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/run.d.ts +2 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +49 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +72 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/installer.d.ts +5 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +86 -0
- package/dist/installer.js.map +1 -0
- package/dist/postinstall.d.ts +2 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +8 -0
- package/dist/postinstall.js.map +1 -0
- package/frontend/README.md +19 -0
- package/memory/context-recovery.md +49 -0
- package/memory/conversation-summarizer.md +65 -0
- package/memory/long-term-project-memory.md +58 -0
- package/memory/memory-manager.md +299 -0
- package/memory/session-compression.md +182 -0
- package/memory/smart-recall.md +37 -0
- package/optimization/compact-example.md +87 -0
- package/optimization/cost-optimizer.md +53 -0
- package/optimization/prompt-optimizer.md +194 -0
- package/optimization/token-audit.md +177 -0
- package/optimization/token-reducer.md +202 -0
- package/package.json +67 -0
- package/security/owasp-auditor.md +249 -0
- package/security/pentest-reviewer.md +109 -0
- package/security/security-engineer.md +238 -0
- package/skills/INDEX.md +434 -0
- package/skills/accessibility-reviewer.md +63 -0
- package/skills/agentic-coding.md +56 -0
- package/skills/ai-agent/SKILL.md +107 -0
- package/skills/ai-agent-dev/SKILL.md +117 -0
- package/skills/alternative-solution-generator.md +72 -0
- package/skills/architecture-patterns/SKILL.md +113 -0
- package/skills/breaking-change-detector.md +84 -0
- package/skills/bug-hunter.md +234 -0
- package/skills/bug-prevention.md +75 -0
- package/skills/chaos-engineering/SKILL.md +108 -0
- package/skills/clean-code-validator.md +218 -0
- package/skills/cloud-architect/SKILL.md +78 -0
- package/skills/cloud-infra/SKILL.md +99 -0
- package/skills/code-auditor.md +24 -0
- package/skills/complexity-analyzer.md +102 -0
- package/skills/confidence-estimator.md +53 -0
- package/skills/continuous-improvement.md +46 -0
- package/skills/continuous-learning-engine.md +51 -0
- package/skills/cto-advisor.md +66 -0
- package/skills/data-engineer/SKILL.md +76 -0
- package/skills/data-engineering/SKILL.md +82 -0
- package/skills/debug-specialist.md +215 -0
- package/skills/dependency-analyzer.md +78 -0
- package/skills/design-pattern-advisor.md +78 -0
- package/skills/documentation-writer.md +66 -0
- package/skills/dry-kiss-yagni-validator.md +114 -0
- package/skills/economia-tokens/SKILL.md +40 -0
- package/skills/er-diagram-builder.md +85 -0
- package/skills/feature-flags/SKILL.md +95 -0
- package/skills/frontend/SKILL.md +327 -0
- package/skills/frontend-dev/SKILL.md +178 -0
- package/skills/graphql/SKILL.md +104 -0
- package/skills/hallucination-detection.md +49 -0
- package/skills/handoff-sessao/SKILL.md +32 -0
- package/skills/i18n-l10n/SKILL.md +103 -0
- package/skills/iac-terraform/SKILL.md +98 -0
- package/skills/legacy-migration/SKILL.md +91 -0
- package/skills/logging-expert.md +78 -0
- package/skills/mcp-server-dev.md +33 -0
- package/skills/memoria-projeto/SKILL.md +49 -0
- package/skills/mobile-dev/SKILL.md +82 -0
- package/skills/mobile-engineer/SKILL.md +74 -0
- package/skills/monitoring-specialist.md +59 -0
- package/skills/observability-expert.md +60 -0
- package/skills/performance-optimizer.md +239 -0
- package/skills/principal-engineer.md +55 -0
- package/skills/privacy-engineer/SKILL.md +79 -0
- package/skills/professor-modo/SKILL.md +33 -0
- package/skills/project-manager.md +74 -0
- package/skills/prompt-engineering.md +27 -0
- package/skills/qa/SKILL.md +231 -0
- package/skills/qa-engineer/SKILL.md +222 -0
- package/skills/readme-generator.md +42 -0
- package/skills/refactoring-specialist.md +250 -0
- package/skills/release-planner.md +70 -0
- package/skills/requirement-analyzer.md +65 -0
- package/skills/risk-analyzer.md +73 -0
- package/skills/root-cause-analyzer.md +210 -0
- package/skills/scalability-expert.md +73 -0
- package/skills/security-privacy/SKILL.md +98 -0
- package/skills/self-correction.md +54 -0
- package/skills/self-critique.md +42 -0
- package/skills/senior-code-reviewer.md +193 -0
- package/skills/sequence-diagram-builder.md +56 -0
- package/skills/serverless-edge/SKILL.md +103 -0
- package/skills/software-architect.md +356 -0
- package/skills/solid-validator.md +332 -0
- package/skills/sre-reliability/SKILL.md +115 -0
- package/skills/staff-engineer.md +61 -0
- package/skills/task-planner.md +61 -0
- package/skills/tech-lead.md +59 -0
- package/skills/technical-debt-analyzer.md +81 -0
- package/skills/technical-writer.md +39 -0
- package/skills/tradeoff-analyzer.md +79 -0
- package/skills/uml-generator.md +72 -0
- package/skills/ux-reviewer.md +61 -0
- package/skills/wasm/SKILL.md +133 -0
- package/skills/web-perf-engineer/SKILL.md +75 -0
- package/skills/web-perf-seo/SKILL.md +111 -0
- package/skills/websocket-realtime/SKILL.md +107 -0
- package/teaching/adaptive-teaching.md +37 -0
- package/teaching/code-explainer.md +172 -0
- package/teaching/interactive-teaching.md +41 -0
- package/teaching/learning-tracker.md +63 -0
- package/teaching/mentor-mode.md +200 -0
- package/teaching/professor-mode.md +222 -0
- package/testing/e2e-test-engineer.md +68 -0
- package/testing/integration-test-engineer.md +74 -0
- package/testing/mocking-specialist.md +78 -0
- package/testing/unit-test-engineer.md +209 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# DevOps: Docker Expert
|
|
2
|
+
|
|
3
|
+
> Version 1.0.0 | Priority: High
|
|
4
|
+
> Dependencies: DevOps Engineer
|
|
5
|
+
> Compatibility: ">=1.0.0"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
Docker Expert creates optimized Docker images and configurations. Uses multi-stage builds, distroless or Alpine base images, layer caching, and security best practices.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Dockerfile Best Practices
|
|
16
|
+
|
|
17
|
+
```dockerfile
|
|
18
|
+
# 1. Use specific tags (not latest)
|
|
19
|
+
FROM php:8.2-fpm-alpine AS base
|
|
20
|
+
|
|
21
|
+
# 2. Use multi-stage builds
|
|
22
|
+
FROM base AS build
|
|
23
|
+
# ... install composer deps, compile assets ...
|
|
24
|
+
|
|
25
|
+
# 3. Minimal production image
|
|
26
|
+
FROM base AS production
|
|
27
|
+
COPY --from=build /app/vendor /app/vendor
|
|
28
|
+
COPY --from=build /app/public/build /app/public/build
|
|
29
|
+
|
|
30
|
+
# 4. Run as non-root
|
|
31
|
+
USER www-data
|
|
32
|
+
|
|
33
|
+
# 5. Read-only root filesystem
|
|
34
|
+
# (configured in docker-compose or k8s)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Image Optimization
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
strategies:
|
|
43
|
+
multi_stage: "builder + runner (separate build deps from runtime)"
|
|
44
|
+
alpine: "5MB base vs 150MB for full PHP image"
|
|
45
|
+
layer_caching: "install dependencies before copying source"
|
|
46
|
+
distroless: "no package manager, shell, or unnecessary tools"
|
|
47
|
+
slim: "remove dev packages, docs, cache"
|
|
48
|
+
|
|
49
|
+
targets:
|
|
50
|
+
PHP: "< 100MB (alpine + production deps only)"
|
|
51
|
+
Node: "< 150MB (alpine + production modules)"
|
|
52
|
+
Python: "< 200MB (slim-buster + compiled deps)"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Docker Compose for Development
|
|
58
|
+
|
|
59
|
+
```yaml
|
|
60
|
+
services:
|
|
61
|
+
app:
|
|
62
|
+
build:
|
|
63
|
+
context: .
|
|
64
|
+
target: development
|
|
65
|
+
volumes:
|
|
66
|
+
- .:/app # live code reload
|
|
67
|
+
environment:
|
|
68
|
+
- APP_ENV=local
|
|
69
|
+
|
|
70
|
+
db:
|
|
71
|
+
image: postgres:16-alpine
|
|
72
|
+
volumes:
|
|
73
|
+
- pgdata:/var/lib/postgresql/data
|
|
74
|
+
|
|
75
|
+
redis:
|
|
76
|
+
image: redis:7-alpine
|
|
77
|
+
|
|
78
|
+
mailpit:
|
|
79
|
+
image: axllent/mailpit # catch emails in dev
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Security
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
never:
|
|
88
|
+
- Run as root (USER directive)
|
|
89
|
+
- Store secrets in images (use secrets mount)
|
|
90
|
+
- Use latest tag (use specific version tags)
|
|
91
|
+
- Install unnecessary packages
|
|
92
|
+
- COPY . without .dockerignore
|
|
93
|
+
|
|
94
|
+
always:
|
|
95
|
+
- .dockerignore for context optimization
|
|
96
|
+
- HEALTHCHECK instruction
|
|
97
|
+
- Read-only root filesystem when possible
|
|
98
|
+
- Regular base image updates (Dependabot/Renovate)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Changelog
|
|
104
|
+
|
|
105
|
+
### 1.0.0 — Initial release. Dockerfile practices, optimization, security.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# DevOps: Git Expert
|
|
2
|
+
|
|
3
|
+
> Version 1.0.0 | Priority: Medium
|
|
4
|
+
> Dependencies: DevOps Engineer
|
|
5
|
+
> Compatibility: ">=1.0.0"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
Git Expert manages version control workflows, branching strategies, commit hygiene, rebasing, conflict resolution, and Git hooks.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Git Flow vs Trunk-Based
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
trunk_based:
|
|
19
|
+
- Main branch always deployable
|
|
20
|
+
- Short-lived feature branches (merge daily)
|
|
21
|
+
- Feature flags for incomplete features
|
|
22
|
+
- Preferred for: CI/CD, DevOps, small-medium teams
|
|
23
|
+
|
|
24
|
+
git_flow:
|
|
25
|
+
- develop + main + release + hotfix branches
|
|
26
|
+
- Longer-lived branches
|
|
27
|
+
- Preferred for: release-based, enterprise, regulatory
|
|
28
|
+
|
|
29
|
+
recommendation: "Trunk-based for most teams. Git Flow for regulated."
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Commit Conventions
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
feat: add user registration
|
|
38
|
+
fix: handle null email on login
|
|
39
|
+
refactor: extract payment calculation
|
|
40
|
+
test: add auth feature tests
|
|
41
|
+
docs: update API documentation
|
|
42
|
+
chore: update PHPStan to level 9
|
|
43
|
+
|
|
44
|
+
Rules:
|
|
45
|
+
- Keep commits small (one logical change)
|
|
46
|
+
- Imperative mood ("add" not "added")
|
|
47
|
+
- Body explains "why" not "what"
|
|
48
|
+
- Reference issue numbers: "fix: handle null email (#142)"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Git Commands
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Interactive rebase (clean up commits before PR)
|
|
57
|
+
git rebase -i HEAD~3
|
|
58
|
+
# squash, reword, reorder
|
|
59
|
+
|
|
60
|
+
# Fix a commit message
|
|
61
|
+
git commit --amend
|
|
62
|
+
|
|
63
|
+
# Undo last commit (keep changes)
|
|
64
|
+
git reset --soft HEAD~1
|
|
65
|
+
|
|
66
|
+
# Find when a bug was introduced
|
|
67
|
+
git bisect start
|
|
68
|
+
git bisect bad
|
|
69
|
+
git bisect good <known-good-commit>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Changelog
|
|
75
|
+
|
|
76
|
+
### 1.0.0 — Initial release. Branching, commits, commands.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# DevOps: Git Flow Specialist
|
|
2
|
+
|
|
3
|
+
> Version 1.0.0 | Priority: Medium
|
|
4
|
+
> Dependencies: Git Expert
|
|
5
|
+
> Compatibility: ">=1.0.0"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
Git Flow Specialist manages the Git Flow branching model: feature branches, develop/main, release branches, hotfixes, and the merge protocol with tags.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Branch Structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
main
|
|
19
|
+
└── develop
|
|
20
|
+
├── feature/user-registration
|
|
21
|
+
├── feature/payment-gateway
|
|
22
|
+
└── release/1.2.0
|
|
23
|
+
└── hotfix/1.2.1
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Workflow
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
feature:
|
|
30
|
+
branch_from: develop
|
|
31
|
+
merge_into: develop
|
|
32
|
+
naming: "feature/<issue>-<description>"
|
|
33
|
+
|
|
34
|
+
release:
|
|
35
|
+
branch_from: develop
|
|
36
|
+
merge_into: main + develop
|
|
37
|
+
naming: "release/<version>"
|
|
38
|
+
action: "tag with version"
|
|
39
|
+
|
|
40
|
+
hotfix:
|
|
41
|
+
branch_from: main
|
|
42
|
+
merge_into: main + develop
|
|
43
|
+
naming: "hotfix/<issue>-<description>"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Commands
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Start feature
|
|
52
|
+
git flow feature start user-registration
|
|
53
|
+
|
|
54
|
+
# Finish feature
|
|
55
|
+
git flow feature finish user-registration
|
|
56
|
+
|
|
57
|
+
# Start release
|
|
58
|
+
git flow release start 1.2.0
|
|
59
|
+
|
|
60
|
+
# Finish release (tags automatically)
|
|
61
|
+
git flow release finish 1.2.0
|
|
62
|
+
|
|
63
|
+
# Start hotfix
|
|
64
|
+
git flow hotfix start 1.2.1
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Changelog
|
|
70
|
+
|
|
71
|
+
### 1.0.0 — Initial release. Branch structure, workflow, commands.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# DevOps: Kubernetes Specialist
|
|
2
|
+
|
|
3
|
+
> Version 1.0.0 | Priority: Medium
|
|
4
|
+
> Dependencies: Docker Expert, DevOps Engineer
|
|
5
|
+
> Compatibility: ">=1.0.0"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
Kubernetes Specialist orchestrates containerized applications in production. Defines deployments, services, ingresses, configmaps, secrets, horizontal pod autoscaling, and service meshes.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Minimal Deployment
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
apiVersion: apps/v1
|
|
19
|
+
kind: Deployment
|
|
20
|
+
metadata:
|
|
21
|
+
name: app
|
|
22
|
+
spec:
|
|
23
|
+
replicas: 3
|
|
24
|
+
selector:
|
|
25
|
+
matchLabels:
|
|
26
|
+
app: app
|
|
27
|
+
template:
|
|
28
|
+
metadata:
|
|
29
|
+
labels:
|
|
30
|
+
app: app
|
|
31
|
+
spec:
|
|
32
|
+
containers:
|
|
33
|
+
- name: app
|
|
34
|
+
image: myapp:1.0.0
|
|
35
|
+
ports:
|
|
36
|
+
- containerPort: 9000
|
|
37
|
+
envFrom:
|
|
38
|
+
- configMapRef:
|
|
39
|
+
name: app-config
|
|
40
|
+
- secretRef:
|
|
41
|
+
name: app-secrets
|
|
42
|
+
resources:
|
|
43
|
+
requests:
|
|
44
|
+
cpu: 100m
|
|
45
|
+
memory: 128Mi
|
|
46
|
+
limits:
|
|
47
|
+
cpu: 500m
|
|
48
|
+
memory: 256Mi
|
|
49
|
+
readinessProbe:
|
|
50
|
+
httpGet:
|
|
51
|
+
path: /health
|
|
52
|
+
port: 9000
|
|
53
|
+
---
|
|
54
|
+
apiVersion: v1
|
|
55
|
+
kind: Service
|
|
56
|
+
metadata:
|
|
57
|
+
name: app
|
|
58
|
+
spec:
|
|
59
|
+
selector:
|
|
60
|
+
app: app
|
|
61
|
+
ports:
|
|
62
|
+
- port: 80
|
|
63
|
+
targetPort: 9000
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Common Resources
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
deployment: stateless apps, manages replicas and rolling updates
|
|
72
|
+
statefulset: stateful apps (databases), stable network identity
|
|
73
|
+
configmap: non-sensitive config (env vars, files)
|
|
74
|
+
secret: sensitive data (base64 encoded, external secret operator preferred)
|
|
75
|
+
ingress: HTTP routing, TLS termination
|
|
76
|
+
hpa: horizontal pod autoscaling (CPU/memory/custom metrics)
|
|
77
|
+
pdb: pod disruption budget (min available during updates)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Changelog
|
|
83
|
+
|
|
84
|
+
### 1.0.0 — Initial release. Deployment template, resources.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# DevOps: Linux Specialist
|
|
2
|
+
|
|
3
|
+
> Version 1.0.0 | Priority: Medium
|
|
4
|
+
> Dependencies: DevOps Engineer
|
|
5
|
+
> Compatibility: ">=1.0.0"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
Linux Specialist manages Linux server configuration, hardening, performance tuning, and troubleshooting for production environments.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Server Hardening
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
ssh:
|
|
19
|
+
- Port: 2222 (not 22)
|
|
20
|
+
- Root login: disabled
|
|
21
|
+
- Password auth: disabled
|
|
22
|
+
- Key-only: yes
|
|
23
|
+
|
|
24
|
+
firewall:
|
|
25
|
+
- Allow only: 80 (HTTP), 443 (HTTPS), 2222 (SSH)
|
|
26
|
+
- Fail2ban: enabled for SSH + HTTP auth
|
|
27
|
+
|
|
28
|
+
updates:
|
|
29
|
+
- Unattended-upgrades: security only
|
|
30
|
+
- Automatic reboot: no (manual)
|
|
31
|
+
|
|
32
|
+
audit:
|
|
33
|
+
- Lynis audit: weekly
|
|
34
|
+
- Check: open ports, user accounts, world-writable files
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Performance Tuning
|
|
40
|
+
|
|
41
|
+
```ini
|
|
42
|
+
# sysctl.conf
|
|
43
|
+
net.core.somaxconn = 65535
|
|
44
|
+
net.ipv4.tcp_tw_reuse = 1
|
|
45
|
+
vm.swappiness = 10
|
|
46
|
+
vm.dirty_ratio = 40
|
|
47
|
+
vm.dirty_background_ratio = 10
|
|
48
|
+
|
|
49
|
+
# limits.conf
|
|
50
|
+
www-data soft nofile 65535
|
|
51
|
+
www-data hard nofile 65535
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Useful Commands
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Disk usage
|
|
60
|
+
du -sh /* | sort -rh | head -10
|
|
61
|
+
|
|
62
|
+
# Find large files
|
|
63
|
+
find / -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh
|
|
64
|
+
|
|
65
|
+
# Process by memory/cpu
|
|
66
|
+
ps aux --sort=-%mem | head
|
|
67
|
+
ps aux --sort=-%cpu | head
|
|
68
|
+
|
|
69
|
+
# I/O wait
|
|
70
|
+
iostat -x 1
|
|
71
|
+
iotop
|
|
72
|
+
|
|
73
|
+
# Network
|
|
74
|
+
ss -tulpn
|
|
75
|
+
iftop
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Changelog
|
|
81
|
+
|
|
82
|
+
### 1.0.0 — Initial release. Hardening, tuning, commands.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# DevOps: Windows Specialist
|
|
2
|
+
|
|
3
|
+
> Version 1.0.0 | Priority: Low
|
|
4
|
+
> Dependencies: DevOps Engineer
|
|
5
|
+
> Compatibility: ">=1.0.0"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
Windows Specialist manages Windows Server configuration, IIS, PowerShell scripting, and Active Directory integration for .NET deployments.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## IIS Configuration
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
app_pool: ".NET CLR v4.0, Integrated pipeline, Identity: ApplicationPoolIdentity"
|
|
19
|
+
sites: "One site per app, bindings: hostname + port"
|
|
20
|
+
ssl: "IIS Manager → Server Certificates → Bindings"
|
|
21
|
+
logging: "IIS logs (daily), ETW for advanced tracing"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## PowerShell Automation
|
|
27
|
+
|
|
28
|
+
```powershell
|
|
29
|
+
# Deploy .NET app
|
|
30
|
+
Stop-WebAppPool -Name "MyApp"
|
|
31
|
+
Remove-Item "C:\inetpub\wwwroot\myapp\*" -Recurse
|
|
32
|
+
Copy-Item ".\build\*" "C:\inetpub\wwwroot\myapp\" -Recurse
|
|
33
|
+
Start-WebAppPool -Name "MyApp"
|
|
34
|
+
|
|
35
|
+
# Check event logs
|
|
36
|
+
Get-EventLog -LogName Application -EntryType Error -Newest 20
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Changelog
|
|
42
|
+
|
|
43
|
+
### 1.0.0 — Initial release. IIS, PowerShell, Windows-specific config.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/compile.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAgDnG"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export function compileCommand(baseDir, agentIdentifier, outputFile) {
|
|
4
|
+
if (!agentIdentifier) {
|
|
5
|
+
console.error('\x1b[31mError:\x1b[0m Please specify an agent name (e.g., architect, security, senior-engineer, techlead, database).');
|
|
6
|
+
process.exit(1);
|
|
7
|
+
}
|
|
8
|
+
const agentsDir = path.join(baseDir, 'agents');
|
|
9
|
+
let agentFile = path.join(agentsDir, `${agentIdentifier}-agent.json`);
|
|
10
|
+
if (!fs.existsSync(agentFile)) {
|
|
11
|
+
agentFile = path.join(agentsDir, `${agentIdentifier}.json`);
|
|
12
|
+
}
|
|
13
|
+
if (!fs.existsSync(agentFile)) {
|
|
14
|
+
console.error(`\x1b[31mError:\x1b[0m Agent "${agentIdentifier}" not found in ${agentsDir}`);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const agent = JSON.parse(fs.readFileSync(agentFile, 'utf-8'));
|
|
18
|
+
const systemContent = fs.existsSync(path.join(baseDir, 'SYSTEM.md'))
|
|
19
|
+
? fs.readFileSync(path.join(baseDir, 'SYSTEM.md'), 'utf-8')
|
|
20
|
+
: '';
|
|
21
|
+
const rulesContent = fs.existsSync(path.join(baseDir, 'RULES.md'))
|
|
22
|
+
? fs.readFileSync(path.join(baseDir, 'RULES.md'), 'utf-8')
|
|
23
|
+
: '';
|
|
24
|
+
let compiled = `<!-- NEXUS AI COMPILED SYSTEM PROMPT -->\n`;
|
|
25
|
+
compiled += `<!-- AGENT: ${agent.name} (v${agent.version || '1.0.0'}) -->\n\n`;
|
|
26
|
+
compiled += `### ROLE & IDENTITY\n${agent.identity || agent.role}\n\n`;
|
|
27
|
+
if (agent.always && agent.always.length > 0) {
|
|
28
|
+
compiled += `### ALWAYS DO\n` + agent.always.map((a) => `- ${a}`).join('\n') + `\n\n`;
|
|
29
|
+
}
|
|
30
|
+
if (agent.never && agent.never.length > 0) {
|
|
31
|
+
compiled += `### NEVER DO\n` + agent.never.map((n) => `- ${n}`).join('\n') + `\n\n`;
|
|
32
|
+
}
|
|
33
|
+
compiled += `--- SYSTEM FOUNDATION ---\n${systemContent}\n\n`;
|
|
34
|
+
compiled += `--- OPERATIONAL RULES ---\n${rulesContent}\n\n`;
|
|
35
|
+
if (outputFile) {
|
|
36
|
+
const outPath = path.resolve(process.cwd(), outputFile);
|
|
37
|
+
fs.writeFileSync(outPath, compiled, 'utf-8');
|
|
38
|
+
console.log(`\x1b[32m✔\x1b[0m Compiled prompt for \x1b[1m${agent.name}\x1b[0m saved to: \x1b[36m${outPath}\x1b[0m`);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.log(compiled);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../src/cli/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAsFtD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export function doctorCommand(baseDir) {
|
|
4
|
+
console.log('\n\x1b[36m=== NexusAI Doctor & Integrity Check ===\x1b[0m\n');
|
|
5
|
+
let errors = 0;
|
|
6
|
+
let warnings = 0;
|
|
7
|
+
// 1. Verify SYSTEM.md & RULES.md
|
|
8
|
+
const systemPath = path.join(baseDir, 'SYSTEM.md');
|
|
9
|
+
const rulesPath = path.join(baseDir, 'RULES.md');
|
|
10
|
+
if (fs.existsSync(systemPath)) {
|
|
11
|
+
console.log(' \x1b[32m✔\x1b[0m SYSTEM.md found');
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
console.log(' \x1b[31m✖\x1b[0m SYSTEM.md missing!');
|
|
15
|
+
errors++;
|
|
16
|
+
}
|
|
17
|
+
if (fs.existsSync(rulesPath)) {
|
|
18
|
+
console.log(' \x1b[32m✔\x1b[0m RULES.md found');
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
console.log(' \x1b[31m✖\x1b[0m RULES.md missing!');
|
|
22
|
+
errors++;
|
|
23
|
+
}
|
|
24
|
+
// 2. Verify Agents
|
|
25
|
+
const agentsDir = path.join(baseDir, 'agents');
|
|
26
|
+
if (!fs.existsSync(agentsDir)) {
|
|
27
|
+
console.log(' \x1b[31m✖\x1b[0m agents directory missing!');
|
|
28
|
+
errors++;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const agentFiles = fs.readdirSync(agentsDir).filter(f => f.endsWith('.json'));
|
|
32
|
+
console.log(` \x1b[32m✔\x1b[0m Found ${agentFiles.length} agent JSON definitions`);
|
|
33
|
+
for (const f of agentFiles) {
|
|
34
|
+
try {
|
|
35
|
+
const content = JSON.parse(fs.readFileSync(path.join(agentsDir, f), 'utf-8'));
|
|
36
|
+
if (!content.name || !content.skills) {
|
|
37
|
+
console.log(` \x1b[33m⚠\x1b[0m Agent ${f} missing required fields (name, skills)`);
|
|
38
|
+
warnings++;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
console.log(` \x1b[31m✖\x1b[0m Invalid JSON in agent file ${f}`);
|
|
43
|
+
errors++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// 3. Verify Skill Resolver
|
|
48
|
+
const resolverPath = path.join(baseDir, 'core', 'skill-resolver.json');
|
|
49
|
+
if (!fs.existsSync(resolverPath)) {
|
|
50
|
+
console.log(' \x1b[31m✖\x1b[0m skill-resolver.json missing!');
|
|
51
|
+
errors++;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
try {
|
|
55
|
+
const resolverData = JSON.parse(fs.readFileSync(resolverPath, 'utf-8'));
|
|
56
|
+
const aliases = resolverData.aliases || {};
|
|
57
|
+
let resolvedCount = 0;
|
|
58
|
+
let unresolvedCount = 0;
|
|
59
|
+
for (const [alias, relPath] of Object.entries(aliases)) {
|
|
60
|
+
let fullPath = path.join(baseDir, relPath);
|
|
61
|
+
if (!fullPath.endsWith('.md') && !fullPath.endsWith('.json')) {
|
|
62
|
+
if (fs.existsSync(fullPath + '.md')) {
|
|
63
|
+
fullPath += '.md';
|
|
64
|
+
}
|
|
65
|
+
else if (fs.existsSync(path.join(fullPath, 'SKILL.md'))) {
|
|
66
|
+
fullPath = path.join(fullPath, 'SKILL.md');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (fs.existsSync(fullPath)) {
|
|
70
|
+
resolvedCount++;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log(` \x1b[33m⚠\x1b[0m Alias "${alias}" points to non-existent target: ${relPath}`);
|
|
74
|
+
unresolvedCount++;
|
|
75
|
+
warnings++;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
console.log(` \x1b[32m✔\x1b[0m Skill Resolver: ${resolvedCount} aliases valid, ${unresolvedCount} unmapped.`);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
console.log(` \x1b[31m✖\x1b[0m Invalid JSON in skill-resolver.json: ${err.message}`);
|
|
82
|
+
errors++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
console.log(`\n\x1b[1mSummary:\x1b[0m ${errors === 0 ? '\x1b[32mPASSED\x1b[0m' : '\x1b[31mFAILED\x1b[0m'} (${errors} errors, ${warnings} warnings)\n`);
|
|
86
|
+
return errors === 0;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAsB,GAAG,IAAI,CA0BpF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { installToProject } from '../../installer.js';
|
|
4
|
+
export function initCommand(baseDir, targetDir = process.cwd()) {
|
|
5
|
+
console.log(`\n\x1b[36m=== Initializing NexusAI (.agents) in: ${targetDir} ===\x1b[0m\n`);
|
|
6
|
+
// Sincronizar/Copiar arquivos para .agents
|
|
7
|
+
installToProject(targetDir);
|
|
8
|
+
const nexusFolder = path.join(targetDir, '.nexus');
|
|
9
|
+
if (!fs.existsSync(nexusFolder)) {
|
|
10
|
+
fs.mkdirSync(nexusFolder, { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
// Write nexus.config.json
|
|
13
|
+
const config = {
|
|
14
|
+
framework: "NexusAI",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
defaultAgent: "senior-engineer",
|
|
17
|
+
skillsDir: ".agents/skills",
|
|
18
|
+
autoCompression: true,
|
|
19
|
+
qualityGates: true
|
|
20
|
+
};
|
|
21
|
+
fs.writeFileSync(path.join(nexusFolder, 'nexus.config.json'), JSON.stringify(config, null, 2));
|
|
22
|
+
console.log(' \x1b[32m✔\x1b[0m Created .nexus/nexus.config.json');
|
|
23
|
+
console.log('\n\x1b[32mNexusAI successfully initialized in this project!\x1b[0m');
|
|
24
|
+
console.log('You can now run \x1b[1mnexus run "your task"\x1b[0m or \x1b[1mnexus compile <agent>\x1b[0m.\n');
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,YAAoB,OAAO,CAAC,GAAG,EAAE;IAC5E,OAAO,CAAC,GAAG,CAAC,oDAAoD,SAAS,eAAe,CAAC,CAAC;IAE1F,2CAA2C;IAC3C,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,iBAAiB;QAC/B,SAAS,EAAE,gBAAgB;QAC3B,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,IAAI;KACnB,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;AAC/G,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAgDlE"}
|