agentleFS
seqraseqra/opentaint/skills/build-project/SKILL.md

build-project

Skill172 starsChanged 2 months agoApache-2.0View on GitHub

Build a target project into an opentaint project model. Use whenever a fresh opentaint project model needed

4 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Delete any existing .opentaint/project first, so files from an old model can't bleed into the new one

    line 25
  2. Distinctive:

    When the build won't converge after ~3 fixes → report non-convergence and leave the build stage pending, for the orchestrator to intervene.

    line 55
  3. Distinctive:

    if the build did not converge: that it is left pending, with the blocking error and your fix attempts

    line 71
  4. Very specific:

    Write only the project model under .opentaint/project, don't produce any other files.

    line 75

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Skill: Build Project

Turn a target project into an opentaint project model: run the project's build, resolve its dependencies if needed. The build tool, toolchain, and scope flags are language-specific — detect the target language from the project's build files, then read the matching references/<language>.md and follow its numbered steps, which key to the ones below.

Inputs

Provided by the caller, fall back to the default value when omitted. Ask back only when a required input is missing and has no sensible default

  • project-root (optional) — root of the target project. Opentaint keeps all analysis artifacts under the fixed <project-root>/.opentaint/ directory, so every .opentaint/... path below resolves there. Default: current directory
  • build-hints (optional) — anything known about how this project builds: required toolchain version, modules/profiles to enable, project-specific build approach and so on

Workflow

1. Reset the output

Delete any existing .opentaint/project first, so files from an old model can't bleed into the new one

2. Identify the build

Determine how the project builds — its build tool, or whether it ships pre-compiled artifacts

3. Enable all modules

Re-enable every module the project disables so their code lands in the model, then build with them included. Enabling a disabled module is a config edit, not a source change, so the model still represents the current commit. If a specific module cannot be made to compile after reasonable effort, exclude only that one. Report which modules were enabled and which (if any) were excluded.

4. Autobuilder — the primary path

opentaint compile <project-root> -o .opentaint/project

opentaint compile runs the project's real build, so it resolves the full dependency graph and the actual module reactor automatically — no hand-listing of dependencies or scope. Set the build toolchain the project needs first. Use this path almost always.

Feedback loop: a failure here is almost always a fixable build problem, not grounds to leave this path — and the autobuilder's wrapper message is terse, so don't judge fixability from it. Reproduce the project's own build directly to surface the real error, fix it, then re-run opentaint compile.

5. Manual build + opentaint project — last resort

Only when the project's own build cannot be made to pass at all, build the artifacts by hand, then create the model from them with opentaint project, restricting analysis to project code. It's required to show the analyzer which code belongs to the project and which to third-party packages. Take the scope roots from what the code actually declares, not the build config or the folder layout. Verify final list of methods carefully, it's very important to list ALL third-party packages.

6. Verify

.opentaint/project/project.yaml exists, non-empty, and its module/scope entries cover every root the project's own code declares. For a multi-module project, confirm the expected module count is present. Make sure, that dependencies at .opentaint/project/dependencies resolved and downloaded correctly.

7. Escalate

When the build won't converge after ~3 fixes → report non-convergence and leave the build stage pending, for the orchestrator to intervene.

Output

Short and concise report of what was done

Artifacts:

  • .opentaint/project/ — the opentaint project model

Summary:

  • model path and (for a multi-module project) the module count it covers
  • the language-specific build fields defined by the selected reference, with the values used by the successful build
  • how the model was built (autobuilder or manual), and any build config the skill changed to make it build (e.g. re-enabled modules)
  • exact build command and arguments if opentaint project was used
  • if the build did not converge: that it is left pending, with the blocking error and your fix attempts

Constraints

  • Write only the project model under .opentaint/project, don't produce any other files. This skill does not write any tracking state, only return info per Output
  • The model is generated by opentaint, never hand-edit project.yaml or anything under the model dir. To change what's analyzed, fix the command and rebuild

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.