Strands Skills support added to main agent with per-user S3 storage and upload UI
dropthejase adds Skills - user-uploaded markdown knowledge packages stored in S3 per user - to the main AgentCore agent. The agent downloads them to `/tmp` at session start and can read them on demand via a `read_local_file` tool. The storage format and upload validation are reusable independent of Strands.
Skills are folders with a SKILL.md manifest plus any reference files. Users upload a zip through the UI; the backend stores the files under a {userId}/ prefix in a dedicated S3 bucket. On session start, ensureSkillsDownloaded() checks whether the local /tmp/{userId}/skills/ directory is already populated and only fetches from S3 if it's empty. This is a reasonable caching strategy for the AgentCore microVM model, where the filesystem persists across turns within a session.
The AgentSkills plugin from @strands-agents/sdk/vended-plugins/skills is loaded with the local skills path and passed as a plugin to the Agent constructor. A read_local_file tool is also added - it accepts a relative path within the user's skills directory and enforces a path traversal guard, refusing any path that escapes skillsLocalBase(userId).
The UI polish commit (b135fc3) bumps text sizes from text-xs to text-sm in the folder tree and skill rows. Small change, but it signals the skills panel was being built for real use rather than demo purposes.
The doc clarification (0aa79de) is worth reading: the bundled EU AI System Classifier skill in the repo is a demo sample, not something that gets auto-seeded into user accounts. The earlier README said "seeds a sample", which would be surprising to users who didn't ask for it. The fix changes it to "shows a demo".
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?