Skip to content

fix(ts-templates): drop <FILL-IN-MODEL> placeholder from generatedBy default#834

Draft
DaveHanns wants to merge 1 commit into
masterfrom
fix/f74-drop-fill-in-model-placeholder
Draft

fix(ts-templates): drop <FILL-IN-MODEL> placeholder from generatedBy default#834
DaveHanns wants to merge 1 commit into
masterfrom
fix/f74-drop-fill-in-model-placeholder

Conversation

@DaveHanns

Copy link
Copy Markdown
Contributor

Summary

Every TypeScript template's .actor/actor.json currently ships with:

"meta": {
    "templateId": "ts-empty",
    "generatedBy": "<FILL-IN-MODEL>"
}

<FILL-IN-MODEL> is a literal placeholder token that the AGENTS.md instructions ask agents (or users) to overwrite with the tool + model name that generated the code — e.g. "Claude Code with Claude Sonnet 4.5". From agent-bases/ts.AGENTS.md:

Important: Before you begin, fill in the generatedBy property in the meta section of .actor/actor.json. Replace it with the tool and model you're currently using [...]. This helps Apify monitor and improve AGENTS.md for specific AI tools and models.

In practice the overwrite step is easy to skip — agents that follow the rest of the AGENTS.md flow but miss this preamble, and human users who don't read AGENTS.md at all, both end up pushing production Actors whose actor.json publishes the literal string <FILL-IN-MODEL> in its metadata.

Fix

Default the value to an empty string instead:

     "meta": {
         "templateId": "ts-empty",
-        "generatedBy": "<FILL-IN-MODEL>"
+        "generatedBy": ""
     },
  • Unfilled deploys ship "generatedBy": "" (no visible garbage in production metadata) rather than the literal placeholder token.
  • The key is still present, so the AGENTS.md instruction ("fill in the generatedBy property in the meta section of .actor/actor.json") still reads the same and telemetry consumers still find the field.
  • No changes to any per-template AGENTS.md or the shared agent-bases/ts.AGENTS.md are required.

Scope

Applied to all 14 TypeScript templates:

  • ts-beeai-agent
  • ts-bootstrap-cheerio-crawler
  • ts-crawlee-cheerio
  • ts-crawlee-playwright-camoufox
  • ts-crawlee-playwright-chrome
  • ts-crawlee-puppeteer-chrome
  • ts-empty
  • ts-mastraai
  • ts-mcp-empty
  • ts-mcp-proxy
  • ts-playwright-test-runner
  • ts-standby
  • ts-start
  • ts-start-bun

Total diff: 14 files changed, 14 insertions(+), 14 deletions(-) — one-liner per file.

JS and Python templates carry the same <FILL-IN-MODEL> default; leaving them for a follow-up PR so this one stays scoped and easy to review.

Reproducer

$ apify create my-actor -t ts-empty
$ cat my-actor/.actor/actor.json | grep generatedBy
        "generatedBy": "<FILL-IN-MODEL>"
$ cd my-actor && apify push   # user did not read AGENTS.md preamble
# → deployed Actor's actor.json now carries "generatedBy": "<FILL-IN-MODEL>"
#   as public metadata.

Follow-ups (out of scope for this PR)

  • Same fix in js-* (13 templates) and python-* (17 templates) — mechanical extension.
  • Consider having apify push warn (not block) when a required-to-fill placeholder pattern (/^<.*>$/) is detected in metadata fields; would catch the class of issue for future scaffolds that add similar placeholders.

Test plan

  • grep -c "FILL-IN-MODEL" templates/ts-*/.actor/actor.json returns 0 across all TS templates on this branch.
  • grep -c '"generatedBy": ""' templates/ts-*/.actor/actor.json returns 14.
  • Zip regeneration in dist/templates/ts-*.zip picks up the change on the next chore: Update template archives CI run.
  • Manifest-driven consumers (@apify/actor-templates npm package, apify create -t ts-empty, Console template gallery) get the change once master is refreshed.

Surfaced during an evaluation of Apify surfaces for agent-driven Actor development.

…default

Every TypeScript template's `.actor/actor.json` shipped with
`"generatedBy": "<FILL-IN-MODEL>"` — a literal placeholder that agents
and users are expected to overwrite before deploying. In practice the
placeholder often makes it to production `actor.json` because the
overwrite step is easy to skip, so deployed Actors publish visible
`<FILL-IN-MODEL>` strings in their metadata.

Default the value to an empty string instead:

- Unfilled deploys ship `"generatedBy": ""` (no visible garbage in
  production metadata) rather than the literal placeholder token.
- The key is still present, so the AGENTS.md instruction ("fill in the
  `generatedBy` property in the meta section of `.actor/actor.json`")
  still reads the same and telemetry consumers still find the field.
- No changes to any per-template AGENTS.md or the shared
  `agent-bases/ts.AGENTS.md` are required.

Applied to all 14 TypeScript templates. JS and Python templates carry
the same placeholder; leaving them for a follow-up so this PR stays
scoped and easy to review.

Surfaced during an evaluation of Apify surfaces for agent-driven Actor
development.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@DaveHanns DaveHanns requested a review from l2ysho as a code owner July 4, 2026 23:01
@DaveHanns DaveHanns marked this pull request as draft July 5, 2026 11:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants