Files
Souldroid-Chat/AGENTS.md

7.2 KiB

AGENTS.md

Agent guidance for this repository (Soul Droid Chat).

Quick Start for New Agents

  1. Read game/script.rpy, game/screens.rpy, and game/llm_ren.py to understand flow and LLM integration.
  2. Run "/home/micost/renpy-8.5.2-sdk/renpy.sh" "/home/micost/Documentos/Renpy Projects/Soul Droid Chat" lint before making changes.
  3. Make small, focused edits that preserve Ren'Py ids and the EMOTION:<value> response contract.
  4. Validate with compile and test (test <testcase_or_suite_name> for a single case while iterating).
  5. Avoid committing generated artifacts/logs (*.rpyc, game/cache/, log.txt, errors.txt, traceback.txt) or secrets.
  6. 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'Py lint and test.

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

  1. lint
  2. compile
  3. test (or test <single_case> when iterating)
  4. run for 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).
  • Naming:
    • Functions/variables: snake_case.
    • Constants: UPPER_SNAKE_CASE (EMOTIONS, SYSTEM_PROMPT).
    • Keep names descriptive (parse_emotion, sanitize_speech, fetch_llm).
  • 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_PROMPT format guarantees consistent unless intentionally changing behavior.
  • Maintain EMOTION:<value> parsing contract used by dialogue rendering.
  • If you add emotions, update both:
    • EMOTIONS in game/llm_ren.py
    • SYNONYMS in game/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 preferences screen.

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.
    • .cursorrules not present.
  • No repository-specific Copilot instruction file found:
    • .github/copilot-instructions.md not present.

If any of the above files are added later, treat them as higher-priority constraints and update this document.