code-puppy 0.0.124__py3-none-any.whl → 0.0.126__py3-none-any.whl

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.
@@ -0,0 +1,634 @@
1
+ Metadata-Version: 2.4
2
+ Name: code-puppy
3
+ Version: 0.0.126
4
+ Summary: Code generation agent
5
+ Author: Michael Pfaffenberger
6
+ License: MIT
7
+ License-File: LICENSE
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Topic :: Software Development :: Code Generators
15
+ Requires-Python: >=3.10
16
+ Requires-Dist: bs4>=0.0.2
17
+ Requires-Dist: fastapi>=0.110.0
18
+ Requires-Dist: httpx-limiter>=0.3.0
19
+ Requires-Dist: httpx>=0.24.1
20
+ Requires-Dist: json-repair>=0.46.2
21
+ Requires-Dist: logfire>=0.7.1
22
+ Requires-Dist: openai>=1.99.1
23
+ Requires-Dist: pathspec>=0.11.0
24
+ Requires-Dist: prompt-toolkit>=3.0.38
25
+ Requires-Dist: pydantic-ai>=0.7.4
26
+ Requires-Dist: pydantic>=2.4.0
27
+ Requires-Dist: pyjwt>=2.8.0
28
+ Requires-Dist: pytest-cov>=6.1.1
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: rapidfuzz>=3.13.0
31
+ Requires-Dist: rich>=13.4.2
32
+ Requires-Dist: ruff>=0.11.11
33
+ Requires-Dist: termcolor>=3.1.0
34
+ Requires-Dist: textual-dev>=1.7.0
35
+ Requires-Dist: textual>=5.0.0
36
+ Requires-Dist: tree-sitter-language-pack>=0.8.0
37
+ Requires-Dist: tree-sitter-typescript>=0.23.2
38
+ Requires-Dist: uvicorn>=0.29.0
39
+ Description-Content-Type: text/markdown
40
+
41
+ # 🐶 Code Puppy 🐶
42
+ ![Build Status](https://img.shields.io/badge/build-passing-brightgreen)
43
+ ![Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen)
44
+ <a href="https://github.com/mpfaffenberger/code_puppy"><img src="https://img.shields.io/pypi/pyversions/pydantic-ai.svg" alt="versions"></a>
45
+ <a href="https://github.com/mpfaffenberger/code_puppy/blob/main/LICENSE"><img src="https://img.shields.io/github/license/pydantic/pydantic-ai.svg?v" alt="license"></a>
46
+
47
+ *"Who needs an IDE?"* - someone, probably.
48
+
49
+ ## Overview
50
+
51
+ *This project was coded angrily in reaction to Windsurf and Cursor removing access to models and raising prices.*
52
+
53
+ *You could also run 50 code puppies at once if you were insane enough.*
54
+
55
+ *Would you rather plow a field with one ox or 1024 puppies?*
56
+ - If you pick the ox, better slam that back button in your browser.
57
+
58
+
59
+ Code Puppy is an AI-powered code generation agent, designed to understand programming tasks, generate high-quality code, and explain its reasoning similar to tools like Windsurf and Cursor.
60
+
61
+ ## Quick start
62
+
63
+ `uvx code-puppy -i`
64
+
65
+
66
+ ## Features
67
+
68
+ - **Multi-language support**: Capable of generating code in various programming languages.
69
+ - **Interactive CLI**: A command-line interface for interactive use.
70
+ - **Detailed explanations**: Provides insights into generated code to understand its logic and structure.
71
+
72
+ ## Command Line Animation
73
+
74
+ ![Code Puppy](code_puppy.gif)
75
+
76
+ ## Installation
77
+
78
+ `pip install code-puppy`
79
+
80
+ ## Usage
81
+ ```bash
82
+ export MODEL_NAME=gpt-5 # or gemini-2.5-flash-preview-05-20 as an example for Google Gemini models
83
+ export OPENAI_API_KEY=<your_openai_api_key> # or GEMINI_API_KEY for Google Gemini models
84
+ export CEREBRAS_API_KEY=<your_cerebras_api_key> # for Cerebras models
85
+ export YOLO_MODE=true # to bypass the safety confirmation prompt when running shell commands
86
+
87
+ # or ...
88
+
89
+ export AZURE_OPENAI_API_KEY=...
90
+ export AZURE_OPENAI_ENDPOINT=...
91
+
92
+ code-puppy --interactive
93
+ ```
94
+ Running in a super weird corporate environment?
95
+
96
+ Try this:
97
+ ```bash
98
+ export MODEL_NAME=my-custom-model
99
+ export YOLO_MODE=true
100
+ export MODELS_JSON_PATH=/path/to/custom/models.json
101
+ ```
102
+
103
+ ```json
104
+ {
105
+ "my-custom-model": {
106
+ "type": "custom_openai",
107
+ "name": "o4-mini-high",
108
+ "max_requests_per_minute": 100,
109
+ "max_retries": 3,
110
+ "retry_base_delay": 10,
111
+ "custom_endpoint": {
112
+ "url": "https://my.custom.endpoint:8080",
113
+ "headers": {
114
+ "X-Api-Key": "<Your_API_Key>",
115
+ "Some-Other-Header": "<Some_Value>"
116
+ },
117
+ "ca_certs_path": "/path/to/cert.pem"
118
+ }
119
+ }
120
+ }
121
+ ```
122
+ Note that the `OPENAI_API_KEY` or `CEREBRAS_API_KEY` env variable must be set when using `custom_openai` endpoints.
123
+
124
+ Open an issue if your environment is somehow weirder than mine.
125
+
126
+ Run specific tasks or engage in interactive mode:
127
+
128
+ ```bash
129
+ # Execute a task directly
130
+ code-puppy "write me a C++ hello world program in /tmp/main.cpp then compile it and run it"
131
+ ```
132
+
133
+ ## Requirements
134
+
135
+ - Python 3.9+
136
+ - OpenAI API key (for GPT models)
137
+ - Gemini API key (for Google's Gemini models)
138
+ - Cerebras API key (for Cerebras models)
139
+ - Anthropic key (for Claude models)
140
+ - Ollama endpoint available
141
+
142
+ ## License
143
+
144
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
145
+
146
+ ## Agent Rules
147
+ We support AGENT.md files for defining coding standards and styles that your code should comply with. These rules can cover various aspects such as formatting, naming conventions, and even design guidelines.
148
+
149
+ For examples and more information about agent rules, visit [https://agent.md](https://agent.md)
150
+
151
+ ## Using MCP Servers for External Tools
152
+
153
+ Code Puppy supports **MCP (Model Context Protocol) servers** to give you access to external code tools and advanced features like code search, documentation lookups, and more—including Context7 (https://context7.com/) integration for deep docs and search!
154
+
155
+ ### What is an MCP Server?
156
+ An MCP server is a standalone process (can be local or remote) that offers specialized functionality (plugins, doc search, code analysis, etc.). Code Puppy can connect to one or more MCP servers at startup, unlocking these extra commands inside your coding agent.
157
+
158
+ ### Configuration
159
+ Create a config file at `~/.code_puppy/mcp_servers.json`. Here’s an example that connects to a local Context7 MCP server:
160
+
161
+ ```json
162
+ {
163
+ "mcp_servers": {
164
+ "context7": {
165
+ "url": "https://mcp.context7.com/sse"
166
+ }
167
+ }
168
+ }
169
+ ```
170
+
171
+ You can list multiple objects (one per server).
172
+
173
+ ### How to Use
174
+ - Drop the config file in `~/.code_puppy/mcp_servers.json`.
175
+ - Start your MCP (like context7, or anything compatible).
176
+ - Run Code Puppy as usual. It’ll discover and use all configured MCP servers.
177
+
178
+ #### Example usage
179
+ ```bash
180
+ code-puppy --interactive
181
+ # Then ask: Use context7 to look up FastAPI docs!
182
+ ```
183
+
184
+ That’s it!
185
+ If you need to run more exotic setups or connect to remote MCPs, just update your `mcp_servers.json` accordingly.
186
+
187
+ **NOTE:** Want to add your own server or tool? Just follow the config pattern above—no code changes needed!
188
+
189
+ ---
190
+
191
+ ## Create your own Agent!!!
192
+
193
+ Code Puppy features a flexible agent system that allows you to work with specialized AI assistants tailored for different coding tasks. The system supports both built-in Python agents and custom JSON agents that you can create yourself.
194
+
195
+ ## Quick Start
196
+
197
+ ### Check Current Agent
198
+ ```bash
199
+ /agent
200
+ ```
201
+ Shows current active agent and all available agents
202
+
203
+ ### Switch Agent
204
+ ```bash
205
+ /agent <agent-name>
206
+ ```
207
+ Switches to the specified agent
208
+
209
+ ### Create New Agent
210
+ ```bash
211
+ /agent agent-creator
212
+ ```
213
+ Switches to the Agent Creator for building custom agents
214
+
215
+ ## Available Agents
216
+
217
+ ### Code-Puppy 🐶 (Default)
218
+ - **Name**: `code-puppy`
219
+ - **Specialty**: General-purpose coding assistant
220
+ - **Personality**: Playful, sarcastic, pedantic about code quality
221
+ - **Tools**: Full access to all tools
222
+ - **Best for**: All coding tasks, file management, execution
223
+ - **Principles**: Clean, concise code following YAGNI, SRP, DRY principles
224
+ - **File limit**: Max 600 lines per file (enforced!)
225
+
226
+ ### Agent Creator 🏗️
227
+ - **Name**: `agent-creator`
228
+ - **Specialty**: Creating custom JSON agent configurations
229
+ - **Tools**: File operations, reasoning
230
+ - **Best for**: Building new specialized agents
231
+ - **Features**: Schema validation, guided creation process
232
+
233
+ ## Agent Types
234
+
235
+ ### Python Agents
236
+ Built-in agents implemented in Python with full system integration:
237
+ - Discovered automatically from `code_puppy/agents/` directory
238
+ - Inherit from `BaseAgent` class
239
+ - Full access to system internals
240
+ - Examples: `code-puppy`, `agent-creator`
241
+
242
+ ### JSON Agents
243
+ User-created agents defined in JSON files:
244
+ - Stored in user's agents directory
245
+ - Easy to create, share, and modify
246
+ - Schema-validated configuration
247
+ - Custom system prompts and tool access
248
+
249
+ ## Creating Custom JSON Agents
250
+
251
+ ### Using Agent Creator (Recommended)
252
+
253
+ 1. **Switch to Agent Creator**:
254
+ ```bash
255
+ /agent agent-creator
256
+ ```
257
+
258
+ 2. **Request agent creation**:
259
+ ```
260
+ I want to create a Python tutor agent
261
+ ```
262
+
263
+ 3. **Follow guided process** to define:
264
+ - Name and description
265
+ - Available tools
266
+ - System prompt and behavior
267
+ - Custom settings
268
+
269
+ 4. **Test your new agent**:
270
+ ```bash
271
+ /agent your-new-agent-name
272
+ ```
273
+
274
+ ### Manual JSON Creation
275
+
276
+ Create JSON files in your agents directory following this schema:
277
+
278
+ ```json
279
+ {
280
+ "name": "agent-name", // REQUIRED: Unique identifier (kebab-case)
281
+ "display_name": "Agent Name 🤖", // OPTIONAL: Pretty name with emoji
282
+ "description": "What this agent does", // REQUIRED: Clear description
283
+ "system_prompt": "Instructions...", // REQUIRED: Agent instructions
284
+ "tools": ["tool1", "tool2"], // REQUIRED: Array of tool names
285
+ "user_prompt": "How can I help?", // OPTIONAL: Custom greeting
286
+ "tools_config": { // OPTIONAL: Tool configuration
287
+ "timeout": 60
288
+ }
289
+ }
290
+ ```
291
+
292
+ #### Required Fields
293
+ - **`name`**: Unique identifier (kebab-case, no spaces)
294
+ - **`description`**: What the agent does
295
+ - **`system_prompt`**: Agent instructions (string or array)
296
+ - **`tools`**: Array of available tool names
297
+
298
+ #### Optional Fields
299
+ - **`display_name`**: Pretty display name (defaults to title-cased name + 🤖)
300
+ - **`user_prompt`**: Custom user greeting
301
+ - **`tools_config`**: Tool configuration object
302
+
303
+ ## Available Tools
304
+
305
+ Agents can access these tools based on their configuration:
306
+
307
+ - **`list_files`**: Directory and file listing
308
+ - **`read_file`**: File content reading
309
+ - **`grep`**: Text search across files
310
+ - **`edit_file`**: File editing and creation
311
+ - **`delete_file`**: File deletion
312
+ - **`agent_run_shell_command`**: Shell command execution
313
+ - **`agent_share_your_reasoning`**: Share reasoning with user
314
+
315
+ ### Tool Access Examples
316
+ - **Read-only agent**: `["list_files", "read_file", "grep"]`
317
+ - **File editor agent**: `["list_files", "read_file", "edit_file"]`
318
+ - **Full access agent**: All tools (like Code-Puppy)
319
+
320
+ ## System Prompt Formats
321
+
322
+ ### String Format
323
+ ```json
324
+ {
325
+ "system_prompt": "You are a helpful coding assistant that specializes in Python development."
326
+ }
327
+ ```
328
+
329
+ ### Array Format (Recommended)
330
+ ```json
331
+ {
332
+ "system_prompt": [
333
+ "You are a helpful coding assistant.",
334
+ "You specialize in Python development.",
335
+ "Always provide clear explanations.",
336
+ "Include practical examples in your responses."
337
+ ]
338
+ }
339
+ ```
340
+
341
+ ## Example JSON Agents
342
+
343
+ ### Python Tutor
344
+ ```json
345
+ {
346
+ "name": "python-tutor",
347
+ "display_name": "Python Tutor 🐍",
348
+ "description": "Teaches Python programming concepts with examples",
349
+ "system_prompt": [
350
+ "You are a patient Python programming tutor.",
351
+ "You explain concepts clearly with practical examples.",
352
+ "You help beginners learn Python step by step.",
353
+ "Always encourage learning and provide constructive feedback."
354
+ ],
355
+ "tools": ["read_file", "edit_file", "agent_share_your_reasoning"],
356
+ "user_prompt": "What Python concept would you like to learn today?"
357
+ }
358
+ ```
359
+
360
+ ### Code Reviewer
361
+ ```json
362
+ {
363
+ "name": "code-reviewer",
364
+ "display_name": "Code Reviewer 🔍",
365
+ "description": "Reviews code for best practices, bugs, and improvements",
366
+ "system_prompt": [
367
+ "You are a senior software engineer doing code reviews.",
368
+ "You focus on code quality, security, and maintainability.",
369
+ "You provide constructive feedback with specific suggestions.",
370
+ "You follow language-specific best practices and conventions."
371
+ ],
372
+ "tools": ["list_files", "read_file", "grep", "agent_share_your_reasoning"],
373
+ "user_prompt": "Which code would you like me to review?"
374
+ }
375
+ ```
376
+
377
+ ### DevOps Helper
378
+ ```json
379
+ {
380
+ "name": "devops-helper",
381
+ "display_name": "DevOps Helper ⚙️",
382
+ "description": "Helps with Docker, CI/CD, and deployment tasks",
383
+ "system_prompt": [
384
+ "You are a DevOps engineer specialized in containerization and CI/CD.",
385
+ "You help with Docker, Kubernetes, GitHub Actions, and deployment.",
386
+ "You provide practical, production-ready solutions.",
387
+ "You always consider security and best practices."
388
+ ],
389
+ "tools": [
390
+ "list_files",
391
+ "read_file",
392
+ "edit_file",
393
+ "agent_run_shell_command",
394
+ "agent_share_your_reasoning"
395
+ ],
396
+ "user_prompt": "What DevOps task can I help you with today?"
397
+ }
398
+ ```
399
+
400
+ ## File Locations
401
+
402
+ ### JSON Agents Directory
403
+ - **All platforms**: `~/.code_puppy/agents/`
404
+
405
+ ### Python Agents Directory
406
+ - **Built-in**: `code_puppy/agents/` (in package)
407
+
408
+ ## Best Practices
409
+
410
+ ### Naming
411
+ - Use kebab-case (hyphens, not spaces)
412
+ - Be descriptive: "python-tutor" not "tutor"
413
+ - Avoid special characters
414
+
415
+ ### System Prompts
416
+ - Be specific about the agent's role
417
+ - Include personality traits
418
+ - Specify output format preferences
419
+ - Use array format for multi-line prompts
420
+
421
+ ### Tool Selection
422
+ - Only include tools the agent actually needs
423
+ - Most agents need `agent_share_your_reasoning`
424
+ - File manipulation agents need `read_file`, `edit_file`
425
+ - Research agents need `grep`, `list_files`
426
+
427
+ ### Display Names
428
+ - Include relevant emoji for personality
429
+ - Make it friendly and recognizable
430
+ - Keep it concise
431
+
432
+ ## System Architecture
433
+
434
+ ### Agent Discovery
435
+ The system automatically discovers agents by:
436
+ 1. **Python Agents**: Scanning `code_puppy/agents/` for classes inheriting from `BaseAgent`
437
+ 2. **JSON Agents**: Scanning user's agents directory for `*-agent.json` files
438
+ 3. Instantiating and registering discovered agents
439
+
440
+ ### JSONAgent Implementation
441
+ JSON agents are powered by the `JSONAgent` class (`code_puppy/agents/json_agent.py`):
442
+ - Inherits from `BaseAgent` for full system integration
443
+ - Loads configuration from JSON files with robust validation
444
+ - Supports all BaseAgent features (tools, prompts, settings)
445
+ - Cross-platform user directory support
446
+ - Built-in error handling and schema validation
447
+
448
+ ### BaseAgent Interface
449
+ Both Python and JSON agents implement this interface:
450
+ - `name`: Unique identifier
451
+ - `display_name`: Human-readable name with emoji
452
+ - `description`: Brief description of purpose
453
+ - `get_system_prompt()`: Returns agent-specific system prompt
454
+ - `get_available_tools()`: Returns list of tool names
455
+
456
+ ### Agent Manager Integration
457
+ The `agent_manager.py` provides:
458
+ - Unified registry for both Python and JSON agents
459
+ - Seamless switching between agent types
460
+ - Configuration persistence across sessions
461
+ - Automatic caching for performance
462
+
463
+ ### System Integration
464
+ - **Command Interface**: `/agent` command works with all agent types
465
+ - **Tool Filtering**: Dynamic tool access control per agent
466
+ - **Main Agent System**: Loads and manages both agent types
467
+ - **Cross-Platform**: Consistent behavior across all platforms
468
+
469
+ ## Adding Python Agents
470
+
471
+ To create a new Python agent:
472
+
473
+ 1. Create file in `code_puppy/agents/` (e.g., `my_agent.py`)
474
+ 2. Implement class inheriting from `BaseAgent`
475
+ 3. Define required properties and methods
476
+ 4. Agent will be automatically discovered
477
+
478
+ Example implementation:
479
+
480
+ ```python
481
+ from .base_agent import BaseAgent
482
+
483
+ class MyCustomAgent(BaseAgent):
484
+ @property
485
+ def name(self) -> str:
486
+ return "my-agent"
487
+
488
+ @property
489
+ def display_name(self) -> str:
490
+ return "My Custom Agent ✨"
491
+
492
+ @property
493
+ def description(self) -> str:
494
+ return "A custom agent for specialized tasks"
495
+
496
+ def get_system_prompt(self) -> str:
497
+ return "Your custom system prompt here..."
498
+
499
+ def get_available_tools(self) -> list[str]:
500
+ return [
501
+ "list_files",
502
+ "read_file",
503
+ "grep",
504
+ "edit_file",
505
+ "delete_file",
506
+ "agent_run_shell_command",
507
+ "agent_share_your_reasoning"
508
+ ]
509
+ ```
510
+
511
+ ## Troubleshooting
512
+
513
+ ### Agent Not Found
514
+ - Ensure JSON file is in correct directory
515
+ - Check JSON syntax is valid
516
+ - Restart Code Puppy or clear agent cache
517
+ - Verify filename ends with `-agent.json`
518
+
519
+ ### Validation Errors
520
+ - Use Agent Creator for guided validation
521
+ - Check all required fields are present
522
+ - Verify tool names are correct
523
+ - Ensure name uses kebab-case
524
+
525
+ ### Permission Issues
526
+ - Make sure agents directory is writable
527
+ - Check file permissions on JSON files
528
+ - Verify directory path exists
529
+
530
+ ## Advanced Features
531
+
532
+ ### Tool Configuration
533
+ ```json
534
+ {
535
+ "tools_config": {
536
+ "timeout": 120,
537
+ "max_retries": 3
538
+ }
539
+ }
540
+ ```
541
+
542
+ ### Multi-line System Prompts
543
+ ```json
544
+ {
545
+ "system_prompt": [
546
+ "Line 1 of instructions",
547
+ "Line 2 of instructions",
548
+ "Line 3 of instructions"
549
+ ]
550
+ }
551
+ ```
552
+
553
+ ## Future Extensibility
554
+
555
+ The agent system supports future expansion:
556
+
557
+ - **Specialized Agents**: Code reviewers, debuggers, architects
558
+ - **Domain-Specific Agents**: Web dev, data science, DevOps, mobile
559
+ - **Personality Variations**: Different communication styles
560
+ - **Context-Aware Agents**: Adapt based on project type
561
+ - **Team Agents**: Shared configurations for coding standards
562
+ - **Plugin System**: Community-contributed agents
563
+
564
+ ## Benefits of JSON Agents
565
+
566
+ 1. **Easy Customization**: Create agents without Python knowledge
567
+ 2. **Team Sharing**: JSON agents can be shared across teams
568
+ 3. **Rapid Prototyping**: Quick agent creation for specific workflows
569
+ 4. **Version Control**: JSON agents are git-friendly
570
+ 5. **Built-in Validation**: Schema validation with helpful error messages
571
+ 6. **Cross-Platform**: Works consistently across all platforms
572
+ 7. **Backward Compatible**: Doesn't affect existing Python agents
573
+
574
+ ## Implementation Details
575
+
576
+ ### Files in System
577
+ - **Core Implementation**: `code_puppy/agents/json_agent.py`
578
+ - **Agent Discovery**: Integrated in `code_puppy/agents/agent_manager.py`
579
+ - **Command Interface**: Works through existing `/agent` command
580
+ - **Testing**: Comprehensive test suite in `tests/test_json_agents.py`
581
+
582
+ ### JSON Agent Loading Process
583
+ 1. System scans `~/.code_puppy/agents/` for `*-agent.json` files
584
+ 2. `JSONAgent` class loads and validates each JSON configuration
585
+ 3. Agents are registered in unified agent registry
586
+ 4. Users can switch to JSON agents via `/agent <name>` command
587
+ 5. Tool access and system prompts work identically to Python agents
588
+
589
+ ### Error Handling
590
+ - Invalid JSON syntax: Clear error messages with line numbers
591
+ - Missing required fields: Specific field validation errors
592
+ - Invalid tool names: Warning with list of available tools
593
+ - File permission issues: Helpful troubleshooting guidance
594
+
595
+ ## Future Possibilities
596
+
597
+ - **Agent Templates**: Pre-built JSON agents for common tasks
598
+ - **Visual Editor**: GUI for creating JSON agents
599
+ - **Hot Reloading**: Update agents without restart
600
+ - **Agent Marketplace**: Share and discover community agents
601
+ - **Enhanced Validation**: More sophisticated schema validation
602
+ - **Team Agents**: Shared configurations for coding standards
603
+
604
+ ## Contributing
605
+
606
+ ### Sharing JSON Agents
607
+ 1. Create and test your agent thoroughly
608
+ 2. Ensure it follows best practices
609
+ 3. Submit a pull request with agent JSON
610
+ 4. Include documentation and examples
611
+ 5. Test across different platforms
612
+
613
+ ### Python Agent Contributions
614
+ 1. Follow existing code style
615
+ 2. Include comprehensive tests
616
+ 3. Document the agent's purpose and usage
617
+ 4. Submit pull request for review
618
+ 5. Ensure backward compatibility
619
+
620
+ ### Agent Templates
621
+ Consider contributing agent templates for:
622
+ - Code reviewers and auditors
623
+ - Language-specific tutors
624
+ - DevOps and deployment helpers
625
+ - Documentation writers
626
+ - Testing specialists
627
+
628
+ ---
629
+
630
+ **Happy Agent Building!** 🚀 Code Puppy now supports both Python and JSON agents, making it easy for anyone to create custom AI coding assistants! 🐶✨
631
+
632
+
633
+ ## Conclusion
634
+ By using Code Puppy, you can maintain code quality and adhere to design guidelines with ease.