Task Management
Analysis
This task manager is mostly purpose-aligned, but its unpinned external installation path and unauthenticated web/API behavior deserve review before installation.
Findings (4)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
pip install git+https://github.com/xfwgithub/aitask-skill.git ... wget https://github.com/xfwgithub/aitask-skill/releases/latest/download/task-skill.zip
The installation instructions fetch unpinned remote source or the latest binary release, while the registry lists no install spec or verified source, so the installed code may differ from the reviewed artifacts.
var input struct {
NewStatus string `json:"new_status"`
ReviewComment string `json:"review_comment"`
}
...
err = database.UpdateTaskStatus(uuid, input.NewStatus)The API accepts a caller-supplied status string and writes it to the database without evidence of validating allowed states or enforcing the human-review rule described in SKILL.md.
task.tags ? task.tags.split(',').map(t => `<span class="badge badge-tag">${t}</span>`).join('') : '-'
...
container.innerHTML = '<table class="table"...'+ rows.join('') + '</tbody></table>';User-controlled task fields such as tags are inserted into HTML via innerHTML without escaping, while other fields are explicitly escaped, indicating a browser script-injection risk in the task UI.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
e.GET("/api/tasks", queryTasksAPI)
e.PUT("/api/tasks/:uuid/status", updateTaskStatusAPI)
addr := fmt.Sprintf(":%d", port)
e.Logger.Fatal(e.Start(addr))The server exposes task-reading and task-updating API routes and starts on ':port', which commonly binds beyond localhost; only logging/recovery middleware is shown, with no authentication or access boundary.
