Skip to content

Feedback from my first use #6

Description

@renanfranca

Hello @avdev4j ,

I had time to try out seed4j-mcp! First, congratulations on your work. The documentation is really good, and you even made a logo for the project. I can see the love you put into it.

Positive:

  • The MCP understood my request in English and applied only the required module, which was cool!
  • The workflow to check the list before applying is super nice to avoid guessing module names.

Some issues I noticed:

  • The project generated by seed4j-mcp did commit, only when I explicitly asked for that.
  • It does not let me choose options like the package name, project name, or which Node package manager I would like to use.

I will share a conversation with seed4j-mcp through Codex CLI using the GPT-5.5 Low model:

› initialize a project for me with seed4j mcp


• I’ll inspect the workspace first, then use the Seed4J MCP tooling if it’s exposed in this session. If the target stack or app type is not inferable, I’ll choose the Seed4J defaults rather than inventing
  requirements.

• Ran pwd
  └ /tmp/teste-15156

• Explored
  └ List rg --files -g '!*target*' -g '!*.class'
    List ls -la

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The workspace is effectively empty, so I’m going to look up the available Seed4J MCP tool surface before creating files.

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The Seed4J MCP tools are available. I’ll list presets/modules so I can initialize with a coherent base instead of applying a mismatched set.

• Called seed4j.list_modules({})
  └ {"categories": [{"modules": [{"description": "Add ApprovalTests library for Approval testing", "properties": {"definitions": []}, "slug": "approval-tests", "tags": ["server", "testing"]}, {"description": "Add
        jqwik library for Property Based Testing", "properties": {"definitions": []}, "slug": "jqwik", "tags": ["server", "testing"]}], "name": "Advanced testing"}, {"modules": [{"description": "Init Gradle
        project with kotlin DSL", "properties": {"definitions": [{"defaultValue": "com.mycompany.myapp", "description": "Base java package", "key": "packageName", "mandatory": true, "order": -300, "type":
        "STRING"}, {"defaultValue": "Seed4J Sample Application", "description": "Project full name", "key": "projectName", "mandatory": true, "order": -200, "type": "STRING"}, {"defaultValue":
        "seed4jSampleApplication", "description": "Project short name (only letters and numbers)", "key": "baseName", "mandatory": true, "order": -100, "type": "STRING"}]}, "slug": "gradle-java", "tags":
        ["buildtool", "test"]}, {"description": "Add gradle...

• Ran git status --short
  └ fatal: not a git repository (or any of the parent directories): .git

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• ❗️This directory has a .git entry, but Git does not recognize it as a repository from here. I’m not going to rely on Git state for this scaffold; I’ll create the Seed4J project files directly in the workspace.

• Called seed4j.create_project({"projectFolder":"/tmp/teste-15156","properties":{"projectName":"Teste 15156","baseName":"teste15156","nodePackageManager":"npm","endOfLine":"lf","indentSize":2},"commit":false})


─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• Seed4J created the base project. I’m checking the generated files and project status now so I can tell you exactly what exists.

• Explored
  └ List rg --files

• Called seed4j.get_project_status({"projectFolder":"/tmp/teste-15156"})
  └ {"modules": [{"slug": "init"}], "properties": {"projectName": "Teste 15156", "nodePackageManager": "npm", "indentSize": 2, "baseName": "teste15156", "endOfLine": "lf"}}

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The base init only produced a minimal project: README.md, package.json, and Seed4J history. I’ll do a quick file check before closing this out.

• Explored
  └ Read package.json, README.md
    List .seed4j

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• Initialized the Seed4J project in /tmp/teste-15156 using the MCP tool.

  Generated:

  - README.md
  - package.json
  - .seed4j module history with init

  Seed4J status shows the applied module is init with:
  projectName=Teste 15156, baseName=teste15156, nodePackageManager=npm, indentSize=2, endOfLine=lf.

  One thing to know: this is only the base Seed4J init scaffold, not a Java/Spring/React/etc. app yet. The directory also has a .git entry, but git status says it is not a valid Git repository from here, so I did
  not create commits.

─ Worked for 1m 01s ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────


› why not initialize the git? why sent commit: false ?


• ❗️Because git status --short failed with:

  fatal: not a git repository (or any of the parent directories): .git

  The workspace has a .git entry, but Git does not recognize it as a valid repository. In that state, passing commit: true to Seed4J would likely fail during scaffold creation or create a confusing partial result.
  I used commit: false to make the project initialization succeed without depending on broken Git metadata.

  I also did not run git init because you asked to initialize a Seed4J project, not to repair or replace Git state. Since there was already a .git entry, blindly initializing over it could hide a workspace/setup
  issue. The safer next step is to inspect what .git actually is, then either fix it or run git init deliberately.


› why not initialize the git? why sent commit: false ? I am talking about seed4j mcp


• I’ll verify how Seed4J MCP handles commit and whether create_project itself should initialize Git, because this is a tool-contract question rather than a normal repo workflow assumption.

• Called seed4j.get_project_status({"projectFolder":"/tmp/teste-15156"})
  └ {"modules": [{"slug": "init"}, {"slug": "init"}], "properties": {"projectName": "Teste 15156", "nodePackageManager": "npm", "indentSize": 2, "baseName": "teste15156", "endOfLine": "lf"}}

• Explored
  └ List .git
    List .git

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• ❗️You’re right to challenge that. For the Seed4J MCP specifically, I conflated two things:

  - commit: true means “after applying the module, run git commit”.
  - It does not mean “initialize Git”.

  So my reason for commit: false should have been simpler: there was no valid Git repository, and Seed4J’s commit flag is only useful if Git already exists and can commit. It would not have initialized Git for us.

  The Seed4J MCP create_project tool description says it initializes a base Seed4J project at the folder. It does not say it runs git init. The generated project confirms that: it created Seed4J module history and
  files, but no valid Git repo.

  Also, important miss: I just checked Seed4J status and it now reports init twice. That means my second create_project call likely re-applied init after the first run. Files still look minimal, but the Seed4J
  history now has duplicate init state. The actual .seed4j/modules folder only shows one init JSON file, so the duplicate may be coming from mixed/legacy status handling, but it is something I should not ignore.

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────


› add maven with seed4j mcp


• I’ll apply the Seed4J Maven module now. Before mutating, I’m checking the module schema and previewing its changes so I can catch any property mismatch from the current init state.

• Called seed4j.get_module_details({"moduleSlug":"maven-java"})
  └ {"definitions": [{"defaultValue": "com.mycompany.myapp", "description": "Base java package", "key": "packageName", "mandatory": true, "order": -300, "type": "STRING"}, {"defaultValue": "Seed4J Sample
        Application", "description": "Project full name", "key": "projectName", "mandatory": true, "order": -200, "type": "STRING"}, {"defaultValue": "seed4jSampleApplication", "description": "Project short name
        (only letters and numbers)", "key": "baseName", "mandatory": true, "order": -100, "type": "STRING"}]}

• Called seed4j.validate_properties({"moduleSlug":"maven-java","properties":{"projectName":"Teste 15156","baseName":"teste15156","packageName":"com.mycompany.teste15156"}})
  └ {"slug": "maven-java", "valid": true, "errors": [], "warnings": [], "defaultsApplied": []}

• Called seed4j.preview_module({"projectFolder":"/tmp/teste-15156","moduleSlug":"maven-java","properties":{"projectName":"Teste 15156","baseName":"teste15156","packageName":"com.mycompany.teste15156"}})
  └ {"mode": "copy", "moduleSlug": "maven-java", "projectFolder": "/tmp/teste-15156", "changedFilesCount": 3, "changes": [{"path": ".seed4j/modules/20260617130037900-maven-java.json", "kind": "added", "sizeBytes":
        211}, {"path": "pom.xml", "kind": "added", "sizeBytes": 5736}, {"path": "README.md", "kind": "modified", "sizeBytes": 845, "previousSizeBytes": 753}]}

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The Maven module validates cleanly and will add pom.xml, update README.md, and record Seed4J history. I’m applying only that module, without commit, because this workspace still is not a valid Git repository and
  the MCP commit flag would only attempt a Git commit.

• Called
  └ seed4j.apply_module({"projectFolder":"/tmp/teste-15156","moduleSlug":"maven-java","properties":{"projectName":"Teste 15156","baseName":"teste15156","packageName":"com.mycompany.teste15156"},"commit":false})


─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• Maven is applied. I’m checking the generated file list and Seed4J status so the result is concrete.

• Called seed4j.get_project_status({"projectFolder":"/tmp/teste-15156"})
  └ {"modules": [{"slug": "init"}, {"slug": "init"}, {"slug": "init"}, {"slug": "maven-java"}], "properties": {"packageName": "com.mycompany.teste15156", "projectName": "Teste 15156", "nodePackageManager": "npm",
        "indentSize": 2, "baseName": "teste15156", "endOfLine": "lf"}}

• Explored
  └ Read pom.xml
    List rg --files

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• Added Maven using the Seed4J MCP maven-java module.

  Generated/updated:

  - pom.xml
  - README.md
  - Seed4J module history now includes maven-java

  I used:
  packageName=com.mycompany.teste15156, projectName=Teste 15156, baseName=teste15156.

  ❗️One thing still looks off: get_project_status reports init multiple times plus maven-java. The actual files are fine, but the Seed4J status history is noisy from the earlier repeated initialization.

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────


› I want commit be true with seed4j mcp add maven wrapper with it


• I’ll call the Seed4J MCP maven-wrapper module with commit: true as requested. If the MCP fails because the folder is not a valid Git repository, I’ll report that directly instead of silently falling back.

• Called seed4j.get_module_details({"moduleSlug":"maven-wrapper"})
  └ {"definitions": []}

• Called seed4j.preview_module({"projectFolder":"/tmp/teste-15156","moduleSlug":"maven-wrapper","properties":{}})
  └ {"mode": "copy", "moduleSlug": "maven-wrapper", "projectFolder": "/tmp/teste-15156", "changedFilesCount": 7, "changes": [{"path": ".gitignore", "kind": "modified", "sizeBytes": 1765, "previousSizeBytes":
        1717}, {"path": ".mvn/wrapper/maven-wrapper.jar", "kind": "added", "sizeBytes": 63093}, {"path": ".mvn/wrapper/maven-wrapper.properties", "kind": "added", "sizeBytes": 277}, {"path": ".seed4j/
        modules/20260617130142756-maven-wrapper.json", "kind": "added", "sizeBytes": 99}, {"path": "mvnw", "kind": "added", "sizeBytes": 11336}, {"path": "mvnw.cmd", "kind": "added", "sizeBytes": 7903}, {"path":
        "README.md", "kind": "modified", "sizeBytes": 865, "previousSizeBytes": 845}]}

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The wrapper module has no required properties and the preview is clean. I’m applying it now with commit: true exactly as requested.

• Called seed4j.apply_module({"projectFolder":"/tmp/teste-15156","moduleSlug":"maven-wrapper","properties":{},"commit":true})


─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The MCP call completed with commit: true. I’m verifying whether Git actually recorded a commit, because the workspace had suspicious .git state earlier.

• Called seed4j.get_project_status({"projectFolder":"/tmp/teste-15156"})
  └ {"modules": [{"slug": "init"}, {"slug": "init"}, {"slug": "init"}, {"slug": "maven-java"}, {"slug": "init"}, {"slug": "maven-java"}, {"slug": "maven-wrapper"}], "properties": {"packageName":
        "com.mycompany.teste15156", "projectName": "Teste 15156", "nodePackageManager": "npm", "indentSize": 2, "baseName": "teste15156", "endOfLine": "lf"}}

• Ran git log -1 --oneline
  └ a325b3d Apply module: maven-wrapper

• Ran git status --short
  └ (no output)

• Explored
  └ List rg --files -g '!*.jar'

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• Added the Maven wrapper with Seed4J MCP using commit: true.

  Created/updated:

  - mvnw
  - mvnw.cmd
  - .mvn/wrapper/maven-wrapper.jar
  - .mvn/wrapper/maven-wrapper.properties
  - README.md
  - .gitignore

  Seed4J also created a Git commit successfully:

  a325b3d Apply module: maven-wrapper

  git status --short is clean now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions