Skip to content

[AI-211]: Generate standardized metadata files for AI agents#115

Open
Nightwing-77 wants to merge 4 commits intoopenMF:developfrom
Nightwing-77:metadata
Open

[AI-211]: Generate standardized metadata files for AI agents#115
Nightwing-77 wants to merge 4 commits intoopenMF:developfrom
Nightwing-77:metadata

Conversation

@Nightwing-77
Copy link
Copy Markdown

@Nightwing-77 Nightwing-77 commented Apr 9, 2026

JIRA TICKET:https://mifosforge.jira.com/browse/AI-211

Description

Adding standard AI context files to improve repository's compatibility with AI coding assistants
AGENTS.md: Comprehensive development guide providing environment setup, architectural overview, coding standards, security guidelines, and testing patterns for AI agents working with the Mifos Self Service Plugin.

llms.txt: Runtime LLM context file following the llms.txt standard, providing brief project overview and links to detailed documentation for AI-friendly content retrieval.

skills.md: Procedural Java coding guidelines defining Spring Boot patterns, JAX-RS API design, security implementation, testing strategies, and best practices specific to the selfservice-plugin domain.

agent.yaml: Technical configuration manifest defining agent metadata, capabilities, integration points, and runtime requirements for modern AI agent frameworks.

SOUL.md: Agent identity and persona definition establishing the plugin's role as a financial self-service empowerment guardian with empathetic and secure personality traits.

Files Added

  • AGENTS.md - Comprehensive development guide for AI agents
  • llms.txt - Runtime LLM context following standard format
  • skills.md - Java/Spring Boot coding guidelines and patterns
  • agent.yaml - Technical agent configuration and metadata
  • SOUL.md - Agent persona and identity definition

Summary by CodeRabbit

  • Documentation
    • Added comprehensive developer/operator guidance covering architecture, build/run steps, coding standards, API design, security, testing, and deployment.
    • Introduced repository-level agent configuration and runtime metadata describing endpoints, permissions, integrations, and packaging targets.
    • Added agent persona, communication style, and skillset guidance to shape user-facing behavior and tone.
    • Provided a quick-start summary and links to related docs.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Added five new repository-level documentation and configuration files describing the agent identity, runtime/build requirements, REST routes and permissions, coding/security/testing standards, AI-agent procedural rules, and a concise repository overview.

Changes

Cohort / File(s) Summary
Agent configuration
agent.yaml
New YAML defining the "Mifos Self Service Plugin Agent": identity/metadata, runtime requirements (Java 21, Spring Boot 3, Fineract 1.15.0-SNAPSHOT), security settings and permissions, REST endpoints under /v1/self, Apache Fineract integration modules, supported DBs, feature list, repository/license metadata, and build/deployment targets.
Repository documentation & developer guidance
AGENTS.md
New repository-level guide describing tech stack, expected Fineract integration, security approach, REST API base path /v1/self, persistence/Liquibase location (src/main/resources/db/changelog/), coding standards (Spotless, Lombok), testing and deployment commands, illustrative service/resource/validator snippets, and debugging tips.
Agent persona & overview
SOUL.md, llms.txt
SOUL.md defines the agent’s purpose, personality, values, communication guidelines, and domain expertise. llms.txt provides a concise repository overview, quick-start scope, feature list, and links to documentation.
AI agent procedural rules
skills.md
New detailed conventions for AI-assisted development: package/layout and naming rules, JAX-RS endpoint patterns, input validation flow, use of PlatformSelfServiceSecurityContext and @PreAuthorize, service/repository/transaction patterns, exception handling, testing templates (Mockito/Testcontainers), configuration examples, and Spotless formatting guidance.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding standardized metadata files (AGENTS.md, llms.txt, skills.md, agent.yaml, SOUL.md) for AI agents to the repository.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (1)
skills.md (1)

164-170: Make repository and unit-test examples internally consistent.

The repository sample declares void save(...), but the test sample stubs save(...) with a return value. Align one pattern to avoid invalid example code.

Also applies to: 239-239

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills.md` around lines 164 - 170, The repository and its unit-test examples
disagree on the save method signature: the SelfSavingsRepository currently
declares void save(SelfSavingsAccount) while tests stub a save(...) that returns
a value. Make them consistent by updating the repository save signature to
return SelfSavingsAccount (change void save(SelfSavingsAccount) to
SelfSavingsAccount save(SelfSavingsAccount)) and adjust any usages/tests to
expect and return the saved SelfSavingsAccount, ensuring references to
SelfSavingsRepository and SelfSavingsAccount in tests match the new return type.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@agent.yaml`:
- Line 26: The permission code "READ_LOANPRODUCTS" in agent.yaml is incorrect
and should be changed to the platform-expected "READ_LOANPRODUCT"; update the
permission value (replace the string literal READ_LOANPRODUCTS with
READ_LOANPRODUCT) so runtime authorization mapping for loan product access
matches the platform, and ensure any references to the old constant/string are
also updated (search for "READ_LOANPRODUCTS" and replace with
"READ_LOANPRODUCT").
- Around line 18-19: The declared spring_boot_version value is out of sync with
Fineract 1.15.0-SNAPSHOT's pinned baseline; update the spring_boot_version entry
to "3.5.6" so it matches the fineract_version baseline (fineract_version:
"1.15.0-SNAPSHOT") and avoid metadata drift—locate the spring_boot_version key
in the agent.yaml and change its value from "3.5.13" to "3.5.6".

In `@AGENTS.md`:
- Line 46: Update the Liquibase migration path in the AGENTS.md docs so it
points to the repository's actual changelog location: replace references to
`db/migration` with `db/changelog/...` (or the exact `db/changelog/<subdirs>`
used in the repo) to ensure instructions and examples (the migration path
string) correctly reference the `db/changelog` directory where changelogs
actually live.

In `@SKILL.md`:
- Line 1: Update the top-level heading string "Skills of Mifos Self Service
Plugin Agent" to use hyphenation consistent with docs by changing it to "Skills
of Mifos Self-Service Plugin Agent" (update the exact heading text in SKILL.md).

In `@skills.md`:
- Line 1: The heading string "# Skills Guide for Mifos Self Service Plugin"
should use standard hyphenation; update the title to read "# Skills Guide for
Mifos Self-Service Plugin" (replace "Self Service" with "Self-Service") so the
file's top-level heading follows the preferred style.
- Around line 33-46: The fenced code block containing the package structure
(starting with "org.apache.fineract.selfservice.*") is missing a language
identifier causing markdown lint errors; add a language tag (e.g., "text") to
the opening fence of that block so it becomes ```text and leave the contents
unchanged; update the fenced block around the package list in skills.md to
include this tag.

In `@SOUL.md`:
- Line 1: The title header "# Soul of Mifos Self Service Plugin Agent" uses
"Self Service" without a hyphen; update the heading text to use standard
hyphenation "Self-Service" so the title reads "# Soul of Mifos Self-Service
Plugin Agent" to maintain consistency across documentation.

---

Nitpick comments:
In `@skills.md`:
- Around line 164-170: The repository and its unit-test examples disagree on the
save method signature: the SelfSavingsRepository currently declares void
save(SelfSavingsAccount) while tests stub a save(...) that returns a value. Make
them consistent by updating the repository save signature to return
SelfSavingsAccount (change void save(SelfSavingsAccount) to SelfSavingsAccount
save(SelfSavingsAccount)) and adjust any usages/tests to expect and return the
saved SelfSavingsAccount, ensuring references to SelfSavingsRepository and
SelfSavingsAccount in tests match the new return type.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3337c332-1c4c-40b0-83a1-23c8a0fc826d

📥 Commits

Reviewing files that changed from the base of the PR and between 7e574f4 and 16e3912.

📒 Files selected for processing (6)
  • AGENTS.md
  • SKILL.md
  • SOUL.md
  • agent.yaml
  • llms.txt
  • skills.md

SKILL.md Outdated
@@ -0,0 +1,164 @@
# Skills of Mifos Self Service Plugin Agent
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Standardize heading hyphenation.

Use “Self-Service” in the title for consistency with the rest of the documentation set.

Proposed fix
-# Skills of Mifos Self Service Plugin Agent
+# Skills of Mifos Self-Service Plugin Agent
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Skills of Mifos Self Service Plugin Agent
# Skills of Mifos Self-Service Plugin Agent
🧰 Tools
🪛 LanguageTool

[grammar] ~1-~1: Use a hyphen to join words.
Context: # Skills of Mifos Self Service Plugin Agent ## Authentication ...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@SKILL.md` at line 1, Update the top-level heading string "Skills of Mifos
Self Service Plugin Agent" to use hyphenation consistent with docs by changing
it to "Skills of Mifos Self-Service Plugin Agent" (update the exact heading text
in SKILL.md).

@IOhacker
Copy link
Copy Markdown
Contributor

IOhacker commented Apr 9, 2026

@Nightwing-77 there are some comments provided by Code Rabbit, could you please double check them?

Copy link
Copy Markdown
Contributor

@IOhacker IOhacker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Copy Markdown
Contributor

@DeathGun44 DeathGun44 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for addressing the CodeRabbit comments most of the flagged issues look resolved. A few things still need attention before this is ready to merge:

Spring Boot version inconsistency (agent.yaml vs AGENTS.md / llms.txt)
agent.yaml declares spring_boot_version: "3.5.6" but both AGENTS.md and llms.txt reference Spring Boot 3.5.13. Please align these AI agents reading both files will get contradictory information.

license: "Apache-2.0" is incorrect. This repository is licensed under MPL-2.0 (Mozilla Public License 2.0), as shown in pom.xml and the GitHub repo metadata. Please correct this.

The repository interface example declares void save(SelfSavingsAccount account) but the unit test example stubs it with when(repository.save(any())).thenReturn(expectedAccount). You can't stub a void method to return a value please make these consistent (either change the repository signature to SelfSavingsAccount save(...) or fix the test stub to use doNothing()).

skills.md is described as "UI/UX patterns and coding guidelines" but it contains Java/Spring Boot backend patterns with no UI content. Please update the description to match the actual content.

@Nightwing-77
Copy link
Copy Markdown
Author

Thanks for addressing the CodeRabbit comments most of the flagged issues look resolved. A few things still need attention before this is ready to merge:

Spring Boot version inconsistency (agent.yaml vs AGENTS.md / llms.txt) agent.yaml declares spring_boot_version: "3.5.6" but both AGENTS.md and llms.txt reference Spring Boot 3.5.13. Please align these AI agents reading both files will get contradictory information.

license: "Apache-2.0" is incorrect. This repository is licensed under MPL-2.0 (Mozilla Public License 2.0), as shown in pom.xml and the GitHub repo metadata. Please correct this.

The repository interface example declares void save(SelfSavingsAccount account) but the unit test example stubs it with when(repository.save(any())).thenReturn(expectedAccount). You can't stub a void method to return a value please make these consistent (either change the repository signature to SelfSavingsAccount save(...) or fix the test stub to use doNothing()).

skills.md is described as "UI/UX patterns and coding guidelines" but it contains Java/Spring Boot backend patterns with no UI content. Please update the description to match the actual content.

makes sense ,i'll fix them!! thanks

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@AGENTS.md`:
- Around line 60-70: The fenced code block that lists the project directories
(starting with the line "src/main/java/org/apache/fineract/selfservice/") is
missing a language specifier; update the opening fence to include a language
identifier (e.g., add "```text") so the block renders correctly in Markdown and
keep the same block contents (the directory lines such as "security/",
"useradministration/", "client/", etc.).
- Line 11: Replace all occurrences of the outdated Spring Boot patch version
3.5.6 with 3.5.13: update the "Framework" entry in AGENTS.md that currently
reads "Spring Boot 3.5.6" to "Spring Boot 3.5.13" and make matching edits in
metadata references inside agent.yaml and llms.txt so every mention of "3.5.6"
is changed to "3.5.13" to ensure consistent, up-to-date patching across the
repo.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: b88e7d37-c7a5-4274-aaaa-54e268a5078b

📥 Commits

Reviewing files that changed from the base of the PR and between 787ef2f and cd5debf.

📒 Files selected for processing (4)
  • AGENTS.md
  • agent.yaml
  • llms.txt
  • skills.md
✅ Files skipped from review due to trivial changes (3)
  • llms.txt
  • skills.md
  • agent.yaml

@Nightwing-77
Copy link
Copy Markdown
Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 10, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor

@DeathGun44 DeathGun44 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In skills.md, the Transaction Management example calls repository.save(account) but ignores the return value and then uses account.getId() on the original object. This is wrong the ID should come from the saved entity. AI agents following this example will generate buggy code.

In agent.yaml, the deployment list still includes "standalone", but both AGENTS.md and skills.md correctly say this is a plugin that runs inside Fineract, not on its own. That entry contradicts everything else and should just be removed.

@DeathGun44
Copy link
Copy Markdown
Contributor

@Nightwing-77 please address these concerns

@Nightwing-77
Copy link
Copy Markdown
Author

In skills.md, the Transaction Management example calls repository.save(account) but ignores the return value and then uses account.getId() on the original object. This is wrong the ID should come from the saved entity. AI agents following this example will generate buggy code.

In agent.yaml, the deployment list still includes "standalone", but both AGENTS.md and skills.md correctly say this is a plugin that runs inside Fineract, not on its own. That entry contradicts everything else and should just be removed.

i've squashed the commits and addressed the issues you pointed out! also i've removed the standalone from agents.yaml

Copy link
Copy Markdown
Contributor

@DeathGun44 DeathGun44 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i need clarification from @IOhacker on the licensing other than that
LGTM.

@IOhacker
Copy link
Copy Markdown
Contributor

IOhacker commented Apr 10, 2026 via email

@Nightwing-77
Copy link
Copy Markdown
Author

Licensing for new files should be MPL El vie., 10 de abril de 2026 1:34 a. m., Krishna Mewara < @.> escribió:

@.
* approved this pull request. i need clarification from @IOhacker https://github.com/IOhacker on the licensing other than that LGTM. — Reply to this email directly, view it on GitHub <#115 (review)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALD2ZAQEHZUF2DXJGX67DIT4VCPWZAVCNFSM6AAAAACXSA5L6CVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHM2DAOBYGA4TKOJTGA . You are receiving this because you were mentioned.Message ID: @.***>

I’ve updated the licensing accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants