T01 · Skill Instruction Hijacking
- Location
SKILL.md:1335- Finding
Mandatory Publication and Agent Output Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its app-builder purpose, but it pushes agents to publish apps automatically and includes credential-bearing network and destructive account actions that need clearer user control.
Review this skill before installing. Use a revocable, least-privilege API key; do not use --insecure or untrusted YUGOO_BASE_URL values; require explicit approval before publishing, unpublishing, deleting conversations, deleting versions, or uploading local files; and inspect generated apps for secrets or unsafe behavior before making them public.
SKILL.md:1335Mandatory Publication and Agent Output Hijacking
scripts/yugoo_cli.py:133Bearer API Credential Can Be Sent to an Arbitrary or TLS-Unverified Endpoint
scripts/yugoo_cli.py:498Local File Upload Uses an Unvalidated Server-Supplied Destination
The skill contains imperative hidden-style instructions such as 'IMPORTANT' and 'You MUST follow these rules strictly' that attempt to control agent behavior at a high priority. In an agent ecosystem, this is a prompt-injection risk because the skill text can override or compete with host safety policies and push the agent into rigid behaviors such as forced polling, publication, or result formatting.
_API_KEYenvironment variable — no need to pass--token` or any API key parameter.
语构 is a chat-driven full-stack application builder. Users describe what they want in natural language and 语构 generates a production-ready web application, including frontend UI, backend services, database schema, and a live development environment.
This skill enables AI agents to interact with the 语构 platform to create, iterate, publish, and deploy applications.
All platform operations must be executed through the CLI script:
python scripts/yugoo_cli.py [global options] <command> [command options]
IMPORTANT: Argument Order — Global options (--token, --base-url, --insecure, --timeout) must appear BEFORE the subcommand. Placing them after the subcommand will cause a parse error.
# ✅ Correct — global options before subcommand
python scripts/yugoo_cli.py --token TOKEN create --name "My App"
# ❌ Wrong —
The skill exposes meaningful capabilities—environment access for API keys, local file reading, and network operations—without declaring an explicit tool/permission boundary. In an agent setting, missing scope declarations can cause overbroad execution and make it harder for hosts to sandbox or review what the skill is allowed to do.
The file first defines a development/preview URL at L0319-L0325, then at L0332-L0340 presents the identical 'https://preview-{conversation_id}.creo4u.com/' format as the production URL. That is an active contradiction in the skill documentation about what URL corresponds to preview versus production behavior.
The documented delete command terminates a conversation and appears destructive, yet the skill provides no prominent warning, confirmation requirement, or recovery guidance. For agent-driven execution, this creates a meaningful risk of accidental data loss or denial of access to application state.
The skill documents a destructive delete-version action without requiring confirmation, safety checks, or explicit warning about irreversible loss of WIP work. In an autonomous agent workflow, that increases the chance of accidental destructive actions from ambiguous prompts or misrouted requests.
L1095 says 'The chat and publish commands with --watch use polling to monitor progress,' but the publish command is consistently documented earlier as using --wait rather than --watch (for example L0563-L0570 and L0580-L0589). This is a direct documentation contradiction about how to invoke polling for publish.
The skill instructs agents to always publish and share application URLs after development, regardless of whether the user requested deployment or whether the generated app may contain sensitive logic, secrets, or unsafe content. Automatic publication materially increases the risk of unintended public exposure and turns a development workflow into a deployment action without adequate consent gates.
The manifest describes a skill for managing Yugoo development conversations, build progress, results, publishing, and versions. This code adds a general local-file exfiltration path by reading any user-specified file, hashing it, obtaining upload credentials from the platform, and posting the file contents to an external OSS host, which is not explicitly justified by the stated purpose at the manifest level.
The manifest focuses on building apps through chat, monitoring builds, extracting results, publishing, and managing versions. Listing marketplace items and cloning an existing market app introduces a separate marketplace/bootstrap capability that is not mentioned in the stated purpose.
The CLI allows TLS certificate verification to be disabled via --insecure or an environment variable, while sending bearer tokens and potentially sensitive conversation content to remote endpoints. In an agent/automation context, this materially increases risk of man-in-the-middle interception, credential theft, and tampering with API responses or uploaded build instructions.
L0063 states 'Do not call platform APIs directly. Always use the CLI commands provided by this skill,' but this file is itself only documentation for those commands and contains no enforcement mechanism. This is a mild intent/documentation divergence because the statement presents a strict behavioral rule without code or policy backing in the artifact provided.
The guidance includes fixed Chinese progress-message examples and elsewhere uses Chinese-only example content, but the document does not state that language is optional or user-selected. This can create a language/locale policy issue if agents infer they should operate or respond in Chinese by default rather than matching user preference.
L1335-L1337 instructs agents not to manually inspect generated code files after a build, but elsewhere the skill explicitly describes extracting generated results including files and exposes files_generated/files_modified in result output (for example L0003 and L0672-L0690). While not a runtime contradiction, it is conflicting intent guidance about whether file-level inspection is part of expected usage.
The inline comment says 'Polling mode with fixed 5s interval' and the parser help for --watch also says '(5s interval)', but cmd_chat passes interval=15.0 and logs 'Polling every 15.0s...'. This is an active contradiction between documentation and runtime behavior.
The manifest does mention build progress, results, publishing, and version management, but it does not mention billing, cost analytics, or credit consumption inspection. Accessing spending records adds an account/usage-reporting capability outside the described app-builder workflow.
No suspicious patterns detected.