> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # loadedSkills > Read-only view of all loaded skill instances keyed by instance key. [ref-listskillkeys]: /docs/server-sdks/reference/typescript/agents/skill-manager/list-skill-keys [ref-getskill]: /docs/server-sdks/reference/typescript/agents/skill-manager/get-skill Read-only getter exposing every loaded skill instance keyed by its instance key (e.g., `"weather"` or `"weather#main_tool"` for multi-instance skills). Use this to iterate or inspect loaded skills without mutating the internal map. Python equivalent: `self.loaded_skills` (public `Dict[str, SkillBase]`). > **Note** > > The returned `ReadonlyMap` is a live view of the internal map, not a copy. > Iterating concurrently with `addSkill()` / `removeSkill()` can see updates > as they happen. For a snapshot of skill keys, use > [`listSkillKeys()`][ref-listskillkeys]; for a single lookup, use > [`getSkill()`][ref-getskill]. ## **Type** `ReadonlyMap` ## **Example** ```typescript {5} import { AgentBase } from '@signalwire/sdk'; const agent = new AgentBase({ name: 'demo' }); await agent.addSkillByName('weather'); await agent.addSkillByName('datetime'); const manager = agent.getSkillManager(); for (const [key, skill] of manager.loadedSkills) { console.log(`${key} -> ${(skill.constructor as typeof skill).SKILL_NAME}`); } ``` > Read-only view of all loaded skill instances keyed by instance key.