claude-code-orchestrator-kit 1.4.1 → 1.4.16
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/.claude/agents/business/workers/lead-research-assistant.md +199 -0
- package/.claude/agents/database/workers/api-builder.md +8 -0
- package/.claude/agents/database/workers/database-architect.md +11 -3
- package/.claude/agents/database/workers/supabase-auditor.md +7 -7
- package/.claude/agents/database/workers/supabase-fixer.md +825 -0
- package/.claude/agents/database/workers/supabase-realtime-optimizer.md +1086 -0
- package/.claude/agents/database/workers/supabase-storage-optimizer.md +1187 -0
- package/.claude/agents/development/workers/code-reviewer.md +17 -2
- package/.claude/agents/development/workers/code-structure-refactorer.md +771 -0
- package/.claude/agents/development/workers/judge-specialist.md +3275 -0
- package/.claude/agents/development/workers/langgraph-specialist.md +1343 -0
- package/.claude/agents/development/workers/stage-pipeline-specialist.md +1173 -0
- package/.claude/agents/frontend/workers/fullstack-nextjs-specialist.md +10 -0
- package/.claude/agents/frontend/workers/nextjs-ui-designer.md +30 -0
- package/.claude/agents/health/workers/bug-fixer.md +31 -3
- package/.claude/agents/health/workers/bug-hunter.md +0 -1
- package/.claude/agents/health/workers/dead-code-hunter.md +167 -75
- package/.claude/agents/health/workers/dead-code-remover.md +217 -66
- package/.claude/agents/health/workers/dependency-auditor.md +83 -24
- package/.claude/agents/health/workers/dependency-updater.md +0 -1
- package/.claude/agents/health/workers/security-scanner.md +0 -1
- package/.claude/agents/infrastructure/workers/bullmq-worker-specialist.md +748 -0
- package/.claude/agents/infrastructure/workers/deployment-engineer.md +446 -0
- package/.claude/agents/infrastructure/workers/infrastructure-specialist.md +2 -2
- package/.claude/agents/infrastructure/workers/rag-specialist.md +799 -0
- package/.claude/agents/infrastructure/workers/server-hardening-specialist.md +1128 -0
- package/.claude/agents/integrations/workers/lms-integration-specialist.md +866 -0
- package/.claude/agents/meta/workers/meta-agent-v3.md +22 -0
- package/.claude/agents/testing/workers/integration-tester.md +1 -1
- package/.claude/agents/testing/workers/test-writer.md +16 -0
- package/.claude/commands/health-bugs.md +14 -281
- package/.claude/commands/health-cleanup.md +14 -281
- package/.claude/commands/health-deps.md +14 -281
- package/.claude/commands/health-metrics.md +51 -709
- package/.claude/commands/health-reuse.md +14 -311
- package/.claude/commands/health-security.md +14 -281
- package/.claude/commands/push.md +17 -3
- package/.claude/commands/speckit.implement.md +0 -11
- package/.claude/commands/supabase-performance-optimizer.md +73 -0
- package/.claude/commands/ultra-think.md +158 -0
- package/.claude/commands/worktree.md +150 -0
- package/.claude/scripts/gates/check-bundle-size.sh +0 -0
- package/.claude/scripts/gates/check-coverage.sh +0 -0
- package/.claude/scripts/gates/check-security.sh +0 -0
- package/.claude/scripts/release.sh +469 -94
- package/.claude/skills/algorithmic-art/LICENSE.txt +202 -0
- package/.claude/skills/algorithmic-art/SKILL.md +405 -0
- package/.claude/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/.claude/skills/algorithmic-art/templates/viewer.html +599 -0
- package/.claude/skills/artifacts-builder/LICENSE.txt +202 -0
- package/.claude/skills/artifacts-builder/SKILL.md +74 -0
- package/.claude/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/.claude/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
- package/.claude/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/.claude/skills/bug-health-inline/SKILL.md +221 -0
- package/.claude/skills/bug-health-inline/references/worker-prompts.md +182 -0
- package/.claude/skills/canvas-design/LICENSE.txt +202 -0
- package/.claude/skills/canvas-design/SKILL.md +130 -0
- package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/.claude/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/.claude/skills/changelog-generator/SKILL.md +104 -0
- package/.claude/skills/cleanup-health-inline/SKILL.md +224 -0
- package/.claude/skills/code-reviewer/SKILL.md +209 -0
- package/.claude/skills/code-reviewer/references/code_review_checklist.md +103 -0
- package/.claude/skills/code-reviewer/references/coding_standards.md +103 -0
- package/.claude/skills/code-reviewer/references/common_antipatterns.md +103 -0
- package/.claude/skills/code-reviewer/scripts/code_quality_checker.py +114 -0
- package/.claude/skills/code-reviewer/scripts/pr_analyzer.py +114 -0
- package/.claude/skills/code-reviewer/scripts/review_report_generator.py +114 -0
- package/.claude/skills/content-research-writer/SKILL.md +538 -0
- package/.claude/skills/deps-health-inline/SKILL.md +227 -0
- package/.claude/skills/frontend-aesthetics/SKILL.md +51 -396
- package/.claude/skills/git-commit-helper/SKILL.md +203 -0
- package/.claude/skills/lead-research-assistant/SKILL.md +199 -0
- package/.claude/skills/reuse-health-inline/SKILL.md +248 -0
- package/.claude/skills/rollback-changes/SKILL.md +50 -524
- package/.claude/skills/run-quality-gate/SKILL.md +36 -346
- package/.claude/skills/security-health-inline/SKILL.md +224 -0
- package/.claude/skills/senior-architect/SKILL.md +209 -0
- package/.claude/skills/senior-architect/references/architecture_patterns.md +755 -0
- package/.claude/skills/senior-architect/references/system_design_workflows.md +749 -0
- package/.claude/skills/senior-architect/references/tech_decision_guide.md +612 -0
- package/.claude/skills/senior-architect/scripts/architecture_diagram_generator.py +114 -0
- package/.claude/skills/senior-architect/scripts/dependency_analyzer.py +114 -0
- package/.claude/skills/senior-architect/scripts/project_architect.py +114 -0
- package/.claude/skills/senior-devops/SKILL.md +209 -0
- package/.claude/skills/senior-devops/references/cicd_pipeline_guide.md +103 -0
- package/.claude/skills/senior-devops/references/deployment_strategies.md +103 -0
- package/.claude/skills/senior-devops/references/infrastructure_as_code.md +103 -0
- package/.claude/skills/senior-devops/scripts/deployment_manager.py +114 -0
- package/.claude/skills/senior-devops/scripts/pipeline_generator.py +114 -0
- package/.claude/skills/senior-devops/scripts/terraform_scaffolder.py +114 -0
- package/.claude/skills/senior-prompt-engineer/SKILL.md +226 -0
- package/.claude/skills/senior-prompt-engineer/references/agentic_system_design.md +80 -0
- package/.claude/skills/senior-prompt-engineer/references/llm_evaluation_frameworks.md +80 -0
- package/.claude/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md +80 -0
- package/.claude/skills/senior-prompt-engineer/scripts/agent_orchestrator.py +100 -0
- package/.claude/skills/senior-prompt-engineer/scripts/prompt_optimizer.py +100 -0
- package/.claude/skills/senior-prompt-engineer/scripts/rag_evaluator.py +100 -0
- package/.claude/skills/setup-knip/SKILL.md +372 -0
- package/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/.claude/skills/systematic-debugging/SKILL.md +296 -0
- package/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/.claude/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.claude/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.claude/skills/systematic-debugging/find-polluter.sh +63 -0
- package/.claude/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.claude/skills/systematic-debugging/test-academic.md +14 -0
- package/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/.claude/skills/theme-factory/LICENSE.txt +202 -0
- package/.claude/skills/theme-factory/SKILL.md +59 -0
- package/.claude/skills/theme-factory/theme-showcase.pdf +0 -0
- package/.claude/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/.claude/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/.claude/skills/theme-factory/themes/desert-rose.md +19 -0
- package/.claude/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/.claude/skills/theme-factory/themes/golden-hour.md +19 -0
- package/.claude/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/.claude/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/.claude/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/.claude/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/.claude/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/.claude/skills/ui-design-system/SKILL.md +32 -0
- package/.claude/skills/ui-design-system/scripts/design_token_generator.py +529 -0
- package/.claude/skills/ux-researcher-designer/SKILL.md +30 -0
- package/.claude/skills/ux-researcher-designer/scripts/persona_generator.py +508 -0
- package/.claude/skills/webapp-testing/LICENSE.txt +202 -0
- package/.claude/skills/webapp-testing/SKILL.md +96 -0
- package/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
- package/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
- package/.gitignore +4 -0
- package/README.md +492 -1093
- package/README.ru.md +719 -0
- package/docs/Agents Ecosystem/AGENT-ORCHESTRATION.md +2 -2
- package/docs/COMMANDS-GUIDE.md +0 -15
- package/docs/reports/skills/new-skills-analysis-2025-12.md +331 -0
- package/package.json +11 -3
- package/.claude/agents/health/orchestrators/bug-orchestrator.md +0 -1084
- package/.claude/agents/health/orchestrators/dead-code-orchestrator.md +0 -1064
- package/.claude/agents/health/orchestrators/dependency-orchestrator.md +0 -1064
- package/.claude/agents/health/orchestrators/reuse-orchestrator.md +0 -1112
- package/.claude/agents/health/orchestrators/security-orchestrator.md +0 -1064
- package/.claude/commands/worktree-cleanup.md +0 -382
- package/.claude/commands/worktree-create.md +0 -287
- package/.claude/commands/worktree-list.md +0 -239
- package/.claude/commands/worktree-remove.md +0 -339
- package/.claude/project-index.md +0 -75
- package/.claude/skills/load-project-context/SKILL.md +0 -89
- package/.claude/skills/resume-session/SKILL.md +0 -164
- package/.claude/skills/save-session-context/SKILL.md +0 -123
- package/.claude/templates/project-index.template.md +0 -67
- package/.claude/templates/session/context.template.md +0 -40
- package/.claude/templates/session/log.template.md +0 -72
- package/.github/BRANCH_PROTECTION.md +0 -137
- package/.github/workflows/build.yml +0 -70
- package/.github/workflows/deploy-staging.yml +0 -90
- package/.github/workflows/test.yml +0 -104
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
3
|
+
* P5.JS GENERATIVE ART - BEST PRACTICES
|
|
4
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
5
|
+
*
|
|
6
|
+
* This file shows STRUCTURE and PRINCIPLES for p5.js generative art.
|
|
7
|
+
* It does NOT prescribe what art you should create.
|
|
8
|
+
*
|
|
9
|
+
* Your algorithmic philosophy should guide what you build.
|
|
10
|
+
* These are just best practices for how to structure your code.
|
|
11
|
+
*
|
|
12
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// 1. PARAMETER ORGANIZATION
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Keep all tunable parameters in one object
|
|
19
|
+
// This makes it easy to:
|
|
20
|
+
// - Connect to UI controls
|
|
21
|
+
// - Reset to defaults
|
|
22
|
+
// - Serialize/save configurations
|
|
23
|
+
|
|
24
|
+
let params = {
|
|
25
|
+
// Define parameters that match YOUR algorithm
|
|
26
|
+
// Examples (customize for your art):
|
|
27
|
+
// - Counts: how many elements (particles, circles, branches, etc.)
|
|
28
|
+
// - Scales: size, speed, spacing
|
|
29
|
+
// - Probabilities: likelihood of events
|
|
30
|
+
// - Angles: rotation, direction
|
|
31
|
+
// - Colors: palette arrays
|
|
32
|
+
|
|
33
|
+
seed: 12345,
|
|
34
|
+
// define colorPalette as an array -- choose whatever colors you'd like ['#d97757', '#6a9bcc', '#788c5d', '#b0aea5']
|
|
35
|
+
// Add YOUR parameters here based on your algorithm
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// 2. SEEDED RANDOMNESS (Critical for reproducibility)
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// ALWAYS use seeded random for Art Blocks-style reproducible output
|
|
42
|
+
|
|
43
|
+
function initializeSeed(seed) {
|
|
44
|
+
randomSeed(seed);
|
|
45
|
+
noiseSeed(seed);
|
|
46
|
+
// Now all random() and noise() calls will be deterministic
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// 3. P5.JS LIFECYCLE
|
|
51
|
+
// ============================================================================
|
|
52
|
+
|
|
53
|
+
function setup() {
|
|
54
|
+
createCanvas(800, 800);
|
|
55
|
+
|
|
56
|
+
// Initialize seed first
|
|
57
|
+
initializeSeed(params.seed);
|
|
58
|
+
|
|
59
|
+
// Set up your generative system
|
|
60
|
+
// This is where you initialize:
|
|
61
|
+
// - Arrays of objects
|
|
62
|
+
// - Grid structures
|
|
63
|
+
// - Initial positions
|
|
64
|
+
// - Starting states
|
|
65
|
+
|
|
66
|
+
// For static art: call noLoop() at the end of setup
|
|
67
|
+
// For animated art: let draw() keep running
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function draw() {
|
|
71
|
+
// Option 1: Static generation (runs once, then stops)
|
|
72
|
+
// - Generate everything in setup()
|
|
73
|
+
// - Call noLoop() in setup()
|
|
74
|
+
// - draw() doesn't do much or can be empty
|
|
75
|
+
|
|
76
|
+
// Option 2: Animated generation (continuous)
|
|
77
|
+
// - Update your system each frame
|
|
78
|
+
// - Common patterns: particle movement, growth, evolution
|
|
79
|
+
// - Can optionally call noLoop() after N frames
|
|
80
|
+
|
|
81
|
+
// Option 3: User-triggered regeneration
|
|
82
|
+
// - Use noLoop() by default
|
|
83
|
+
// - Call redraw() when parameters change
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// ============================================================================
|
|
87
|
+
// 4. CLASS STRUCTURE (When you need objects)
|
|
88
|
+
// ============================================================================
|
|
89
|
+
// Use classes when your algorithm involves multiple entities
|
|
90
|
+
// Examples: particles, agents, cells, nodes, etc.
|
|
91
|
+
|
|
92
|
+
class Entity {
|
|
93
|
+
constructor() {
|
|
94
|
+
// Initialize entity properties
|
|
95
|
+
// Use random() here - it will be seeded
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
update() {
|
|
99
|
+
// Update entity state
|
|
100
|
+
// This might involve:
|
|
101
|
+
// - Physics calculations
|
|
102
|
+
// - Behavioral rules
|
|
103
|
+
// - Interactions with neighbors
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
display() {
|
|
107
|
+
// Render the entity
|
|
108
|
+
// Keep rendering logic separate from update logic
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ============================================================================
|
|
113
|
+
// 5. PERFORMANCE CONSIDERATIONS
|
|
114
|
+
// ============================================================================
|
|
115
|
+
|
|
116
|
+
// For large numbers of elements:
|
|
117
|
+
// - Pre-calculate what you can
|
|
118
|
+
// - Use simple collision detection (spatial hashing if needed)
|
|
119
|
+
// - Limit expensive operations (sqrt, trig) when possible
|
|
120
|
+
// - Consider using p5 vectors efficiently
|
|
121
|
+
|
|
122
|
+
// For smooth animation:
|
|
123
|
+
// - Aim for 60fps
|
|
124
|
+
// - Profile if things are slow
|
|
125
|
+
// - Consider reducing particle counts or simplifying calculations
|
|
126
|
+
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// 6. UTILITY FUNCTIONS
|
|
129
|
+
// ============================================================================
|
|
130
|
+
|
|
131
|
+
// Color utilities
|
|
132
|
+
function hexToRgb(hex) {
|
|
133
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
134
|
+
return result ? {
|
|
135
|
+
r: parseInt(result[1], 16),
|
|
136
|
+
g: parseInt(result[2], 16),
|
|
137
|
+
b: parseInt(result[3], 16)
|
|
138
|
+
} : null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function colorFromPalette(index) {
|
|
142
|
+
return params.colorPalette[index % params.colorPalette.length];
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Mapping and easing
|
|
146
|
+
function mapRange(value, inMin, inMax, outMin, outMax) {
|
|
147
|
+
return outMin + (outMax - outMin) * ((value - inMin) / (inMax - inMin));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function easeInOutCubic(t) {
|
|
151
|
+
return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Constrain to bounds
|
|
155
|
+
function wrapAround(value, max) {
|
|
156
|
+
if (value < 0) return max;
|
|
157
|
+
if (value > max) return 0;
|
|
158
|
+
return value;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// 7. PARAMETER UPDATES (Connect to UI)
|
|
163
|
+
// ============================================================================
|
|
164
|
+
|
|
165
|
+
function updateParameter(paramName, value) {
|
|
166
|
+
params[paramName] = value;
|
|
167
|
+
// Decide if you need to regenerate or just update
|
|
168
|
+
// Some params can update in real-time, others need full regeneration
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function regenerate() {
|
|
172
|
+
// Reinitialize your generative system
|
|
173
|
+
// Useful when parameters change significantly
|
|
174
|
+
initializeSeed(params.seed);
|
|
175
|
+
// Then regenerate your system
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ============================================================================
|
|
179
|
+
// 8. COMMON P5.JS PATTERNS
|
|
180
|
+
// ============================================================================
|
|
181
|
+
|
|
182
|
+
// Drawing with transparency for trails/fading
|
|
183
|
+
function fadeBackground(opacity) {
|
|
184
|
+
fill(250, 249, 245, opacity); // Anthropic light with alpha
|
|
185
|
+
noStroke();
|
|
186
|
+
rect(0, 0, width, height);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Using noise for organic variation
|
|
190
|
+
function getNoiseValue(x, y, scale = 0.01) {
|
|
191
|
+
return noise(x * scale, y * scale);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Creating vectors from angles
|
|
195
|
+
function vectorFromAngle(angle, magnitude = 1) {
|
|
196
|
+
return createVector(cos(angle), sin(angle)).mult(magnitude);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// ============================================================================
|
|
200
|
+
// 9. EXPORT FUNCTIONS
|
|
201
|
+
// ============================================================================
|
|
202
|
+
|
|
203
|
+
function exportImage() {
|
|
204
|
+
saveCanvas('generative-art-' + params.seed, 'png');
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// ============================================================================
|
|
208
|
+
// REMEMBER
|
|
209
|
+
// ============================================================================
|
|
210
|
+
//
|
|
211
|
+
// These are TOOLS and PRINCIPLES, not a recipe.
|
|
212
|
+
// Your algorithmic philosophy should guide WHAT you create.
|
|
213
|
+
// This structure helps you create it WELL.
|
|
214
|
+
//
|
|
215
|
+
// Focus on:
|
|
216
|
+
// - Clean, readable code
|
|
217
|
+
// - Parameterized for exploration
|
|
218
|
+
// - Seeded for reproducibility
|
|
219
|
+
// - Performant execution
|
|
220
|
+
//
|
|
221
|
+
// The art itself is entirely up to you!
|
|
222
|
+
//
|
|
223
|
+
// ============================================================================
|