7.2 KiB
7.2 KiB
AGENTS.md
Agent guidance for this repository (Soul Droid Chat).
Quick Start for New Agents
- Read
game/script.rpy,game/screens.rpy, andgame/llm_ren.pyto understand flow and LLM integration. - Run
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" lintbefore making changes. - Make small, focused edits that preserve Ren'Py ids and the
EMOTION:<value>response contract. - Validate with
compileandtest(test <testcase_or_suite_name>for a single case while iterating). - Avoid committing generated artifacts/logs (
*.rpyc,game/cache/,log.txt,errors.txt,traceback.txt) or secrets. - In your handoff, include what changed, why, and exact validation commands run.
Project Snapshot
- Engine: Ren'Py 8.5.x project with script files in
game/*.rpy. - Python support code is embedded in Ren'Py files and
game/*_ren.py. - Runtime dependency: LM Studio server (default
http://localhost:1234). - No dedicated
tests/directory was found; use Ren'Pylintandtest.
Repository Layout
game/script.rpy: main dialogue/game flow loop.game/screens.rpy: UI screens, preferences, and menus.game/options.rpy: Ren'Py/build/runtime config and defaults.game/llm_ren.py: LLM call logic, parsing, and sanitizing.game/constants_ren.py: emotion synonym table.project.json,android.json: distribution/build settings.
Tooling and Environment
- Expected Ren'Py launcher script:
/home/micost/renpy-8.5.2-sdk/renpy.sh. - CLI usage pattern:
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "<repo-path>" <command> [args]
- Python in environment is available (
python3), but gameplay validation should use Ren'Py commands.
Build, Lint, and Test Commands
Run all commands from repository root:
/home/micost/Documentos/Renpy Projects/Soul Droid Chat
Quick checks (most common)
- Lint project:
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" lint
- Run game locally:
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" run
- Compile scripts/python cache:
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" compile
Test execution (Ren'Py test runner)
- Run default/global test suite:
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" test
- Run a single test suite or testcase (important):
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" test <testcase_or_suite_name>
- Show detailed test report:
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" test --report-detailed
- Run all testcases even if disabled:
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" test --enable-all
Distribution/build packaging
- Create distributions (launcher command):
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" distribute
- Android build exists as a Ren'Py command (if SDK/keystore configured):
"/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" android_build
Suggested Validation Sequence for Agents
lintcompiletest(ortest <single_case>when iterating)runfor a manual smoke check on the edited flow/screen
If a command fails, include the failing command and key error excerpt in your report.
Code Style Guidelines
General principles
- Match existing Ren'Py and Python style in nearby files.
- Prefer small, focused changes; avoid unrelated refactors.
- Keep user-facing narrative tone and Anita persona constraints intact.
- Preserve ASCII-oriented output behavior where current code expects it.
Ren'Py script/style conventions (.rpy)
- Use 4-space indentation; never tabs.
- Keep labels/screen names
snake_case(label start,screen quick_menu). - Keep style declarations grouped and readable (existing file order is a good template).
- For dialogue flow, keep Python blocks short; move reusable logic to
*_ren.py. - Use explicit keyword args when clarity helps (
prompt =,fadeout,fadein). - Do not rename core ids required by Ren'Py (
"window","what","who","input").
Python conventions (*_ren.py and embedded init python)
- Imports:
- Standard library first (
re). - Ren'Py modules (
renpy,persistent). - Local imports last (
from .constants_ren import SYNONYMS).
- Standard library first (
- Naming:
- Functions/variables:
snake_case. - Constants:
UPPER_SNAKE_CASE(EMOTIONS,SYSTEM_PROMPT). - Keep names descriptive (
parse_emotion,sanitize_speech,fetch_llm).
- Functions/variables:
- Types:
- Add type hints on new/edited Python functions when practical.
- Keep return types accurate (for list-returning functions, annotate accordingly).
- Formatting:
- Follow PEP 8 basics for spacing, line breaks, and readability.
- Keep multiline literals and dicts formatted consistently with existing file style.
Error handling and resilience
- Wrap external boundary calls (network/LM Studio) with
try/except. - Return safe fallback values that keep game loop stable.
- Error messages should be concise and actionable for debugging.
- Avoid swallowing exceptions silently; at minimum return or log context.
- Preserve conversation continuity fields when present (
last_response_id).
LLM integration constraints
- Keep
SYSTEM_PROMPTformat guarantees consistent unless intentionally changing behavior. - Maintain
EMOTION:<value>parsing contract used by dialogue rendering. - If you add emotions, update both:
EMOTIONSingame/llm_ren.pySYNONYMSingame/constants_ren.py
- Keep speech sanitization aligned with UI/rendering constraints.
UI/screens changes
- Reuse existing
gui.*variables and style helpers where possible. - Keep mobile/small variant handling (
renpy.variant("small")) intact. - Prefer extending existing screens over introducing parallel duplicate screens.
- For settings UI, follow patterns already used in
preferencesscreen.
Agent Working Rules
- Before edits:
- Read related files fully (at least the touched blocks and nearby context).
- Check for existing patterns and follow them.
- During edits:
- Do not include secrets or API keys in committed files.
- Do not commit generated caches/logs (
*.rpyc,log.txt,errors.txt,traceback.txt).
- After edits:
- Run relevant validation commands from the section above.
- Summarize what changed, why, and what was validated.
Git and Change Scope
- Keep commits scoped to the requested task.
- Avoid touching binary assets unless the task explicitly requires it.
- If a keystore or credential-like file is changed, call it out explicitly.
- Do not rewrite history unless explicitly requested.
Cursor/Copilot Rules Status
- No repository-specific Cursor rules were found:
.cursor/rules/not present..cursorrulesnot present.
- No repository-specific Copilot instruction file found:
.github/copilot-instructions.mdnot present.
If any of the above files are added later, treat them as higher-priority constraints and update this document.