# Skill Development

- [Voice User Interface Design Guidelines](/docs/skill-development/voice-user-interface-design-guidelines.md): Learn about the Design process for planning a Skill, the basics of Voice Interaction, and best practices.
- [What can a Skill do?](/docs/skill-development/voice-user-interface-design-guidelines/what-can-a-skill-do.md): You can think of skills as the apps of the Mycroft system.
- [Design Process](/docs/skill-development/voice-user-interface-design-guidelines/design-process.md): At Mycroft we are advocates for a User Centered Design or Design Thinking approach.
- [Voice Assistant Personas](/docs/skill-development/voice-user-interface-design-guidelines/voice-assistant-personas.md): A Voice Assistant Persona is the personality that the user attributes to the voice assistant.
- [Interactions](/docs/skill-development/voice-user-interface-design-guidelines/interactions-and-guidelines.md): In this section, you will learn about the interaction between users and Mycroft. You will learn the terms used to describe the different parts of the interaction, and best practices.
- [Intents](/docs/skill-development/voice-user-interface-design-guidelines/interactions-and-guidelines/intents.md): An intent is how the User starts an interaction with Mycroft. It represents the job they are trying to accomplish.
- [Statements and Prompts](/docs/skill-development/voice-user-interface-design-guidelines/interactions-and-guidelines/statements-and-prompts.md): There are two basic ways for Mycroft to interact with the user, Statements and Prompts.
- [Confirmations](/docs/skill-development/voice-user-interface-design-guidelines/interactions-and-guidelines/confirmations.md): Confirmations are used to verify that the input from the user was understood correctly.
- [Conversations](/docs/skill-development/voice-user-interface-design-guidelines/conversations.md): Conversations are made up of a series of individual interactions, but are more than the sum of their parts. For more complicated Skills conversations are a necessity.
- [Error Handling](/docs/skill-development/voice-user-interface-design-guidelines/error-handling.md)
- [Example Interaction Script](/docs/skill-development/voice-user-interface-design-guidelines/example-dialogs.md)
- [Prototyping](/docs/skill-development/voice-user-interface-design-guidelines/prototyping.md): One way to prototype your skill is to get willing test participants to act as the User of the skill. These tests can be done in person or over a video conferencing tool.
- [Design to Development](/docs/skill-development/voice-user-interface-design-guidelines/design-to-development.md): Use a Behavior Driven approach and write tests in a natural language style before any development begins. This improves communication within your team, and sets your Skill up for success.
- [Development Setup](/docs/skill-development/introduction.md): Explore the fundamental building blocks of a Skill, and the knowledge required to create meaningful and engaging voice interactions.
- [Python Resources](/docs/skill-development/introduction/python-resources.md): Python is an object-oriented, interpreted, high-level programming language. It is known for being easy to read and learn.
- [Your First Skill](/docs/skill-development/introduction/your-first-skill.md): Ready to create your first Skill? See how easy it is to get a new Skill up and running, then we will step through the basic anatomy of a Mycroft Skill.
- [Skill Structure](/docs/skill-development/skill-structure.md): Exploring the foundational components of a basic Mycroft Skill.
- [Lifecycle Methods](/docs/skill-development/skill-structure/lifecycle-methods.md): Mycroft Skills provide a number of methods to perform actions at different points during the lifecycle of the Class instance.
- [Logging](/docs/skill-development/skill-structure/logging.md): Logging is useful during Skill development, as well as to help end-users diagnose problems in the future.
- [Skill Settings](/docs/skill-development/skill-structure/skill-settings.md): Skill settings allow users to customize their experience or authenticate with external services. Learn how to create and use settings in your Skill.
- [Dependencies](/docs/skill-development/skill-structure/dependencies.md): Mycroft Skills are powerful because we can make use of external packages and applications, or add voice interfaces to existing tools.
- [Manifest.yml](/docs/skill-development/skill-structure/dependencies/manifest-yml.md): A Skill's \`manifest.yml\` file is the default method for defining the dependencies of a Mycroft Skill.
- [Requirements files](/docs/skill-development/skill-structure/dependencies/requirements-files.md): A Skill's \`requirements.txt\` and \`requirements.sh\` files provide an alternative method to define the dependencies of a Mycroft Skill.
- [Filesystem access](/docs/skill-development/skill-structure/filesystem.md): Skills have access to both persistent and temporary namespaced filesystems independent of the Skill's root directory.
- [Skill API](/docs/skill-development/skill-structure/api.md): The Skill API offers a simple and convenient way to use other Skill's methods and export your own to help other Skill creators.
- [Integration Tests](/docs/skill-development/voight-kampff.md): Integration testing ensures your Skill works as expected when it is running inside Mycroft in a realistic environment alongside other Skills.
- [Test Steps](/docs/skill-development/voight-kampff/test-steps.md): Steps define the details of our tests using a Behavior Driven Development framework.
- [Scenario Outlines](/docs/skill-development/voight-kampff/scenario-outlines.md): One of the simplest, yet most useful features of Voight Kampff is the ability to provide a list of examples that will all be tested within one Scenario.
- [Test Runner](/docs/skill-development/voight-kampff/test-runner.md)
- [Reviewing the Report](/docs/skill-development/voight-kampff/reviewing-the-report.md)
- [Adding Custom Steps](/docs/skill-development/voight-kampff/custom-steps.md): Some Skills require their own unique Steps to test functionality specific to that Skill.
- [Old Test System](/docs/skill-development/voight-kampff/automatic-testing.md): Mycroft has a built-in mechanism to help you automatically test your Skill. This is particularly important when submitting your Skill for inclusion in the Marketplace.
- [User interaction](/docs/skill-development/user-interaction.md): Now that you have the basics, learn about how to interact get input and create meaningful interactions with Users of your Skill.
- [Intents](/docs/skill-development/user-interaction/intents.md): An intent is the task the user intends to accomplish when they say something. The role of the intent parser is to extract from the user's speech key data elements that specify their intent.
- [Padatious Intents](/docs/skill-development/user-interaction/intents/padatious-intents.md)
- [Adapt Intents](/docs/skill-development/user-interaction/intents/adapt-intents.md)
- [Statements](/docs/skill-development/user-interaction/statements.md): A statement is any information spoken by Mycroft to the User.
- [Prompts](/docs/skill-development/user-interaction/prompts.md): A prompt is any question or statement spoken by Mycroft that expects a response from the User.
- [Parsing Utterances](/docs/skill-development/user-interaction/parsing.md): Mycroft provides a range of easy to use methods to parse the contents of utterances from Users.
- [Confirmations](/docs/skill-development/user-interaction/confirmations.md): Confirmations are used to verify that the input from the User was understood correctly. These may be verbal or non-verbal.
- [Conversational Context](/docs/skill-development/user-interaction/conversational-context.md): A Skill can add context to the Intent Parser to create more natural interaction with Mycroft.
- [Converse](/docs/skill-development/user-interaction/converse.md): Converse allows a recently active Skill to inspect utterances before the normal intent handling process. It allows for Skills to respond to unstructured follow up utterances.
- [Displaying information](/docs/skill-development/displaying-information.md)
- [GUI Framework](/docs/skill-development/displaying-information/mycroft-gui.md): A visual and display framework for Mycroft running on top of KDE Plasma Technology and built using Kirigami, a lightweight user interface framework for convergent applications empowered by Qt.
- [Show Simple Content](/docs/skill-development/displaying-information/show-simple-content.md): The Mycroft GUI Framework has a number of common methods for displaying standard simple content types.
- [Mycroft-GUI on a PC](/docs/skill-development/displaying-information/mycroft-gui-on-a-pc.md): During development, it can be useful to emulate the Mark II display on your primary machine.
- [Mark 1 Display](/docs/skill-development/displaying-information/mark-1-display.md): How to make use of the enclosure display on the Mark 1.
- [Advanced Skill Types](/docs/skill-development/skill-types.md)
- [Fallback Skill](/docs/skill-development/skill-types/fallback-skill.md): A Fallback Skill is a Skill that will be called if no Intent is matched to the Utterance.
- [Common Play Framework](/docs/skill-development/skill-types/common-play-framework.md): To support a range of Skills that can "play" things, each Common Play Skill must return a confidence score to indicate their ability to successfully complete the users request.
- [Common Query Framework](/docs/skill-development/skill-types/common-query-framework.md): To support a range of Skills that can answer user's queries, each Common  Query Skill must return a confidence score to indicate their ability to successfully complete the users request.
- [Common IoT Framework](/docs/skill-development/skill-types/common-iot-framework.md): Work in progress - This Framework enables Common IoT Skills to operate together to control a range of IoT devices, providing a better experience for the end user.
- [Mycroft Skills Manager](/docs/skill-development/mycroft-skills-manager.md): Mycroft Skills Manager (msm) is a command line tool used to add, manage and remove Skills on any Mycroft installation.
- [Troubleshooting](/docs/skill-development/mycroft-skills-manager/msm-troubleshooting.md): Troubleshooting guide for the Mycroft Skills Manager.
- [Marketplace Submission](/docs/skill-development/marketplace-submission.md): Want to share your new creation with the world? To have your Skill listed in the Marketplace, we need to ensure it has all the information required and works as expected.
- [Skills Acceptance Process](/docs/skill-development/marketplace-submission/skills-acceptance-process.md): The Skills Acceptance Process outlines how Skills are tested, reviewed, deployed and promoted through the Mycroft Marketplace.
- [Information Review Template](/docs/skill-development/marketplace-submission/skills-acceptance-process/skills-review-information-template.md): Template for the Information Review component of the Skills Acceptance Process.
- [Code Review Template](/docs/skill-development/marketplace-submission/skills-acceptance-process/skills-review-code-template.md): Template for the Code Review component of the Skills Acceptance Process.
- [Functional Review Template](/docs/skill-development/marketplace-submission/skills-acceptance-process/skills-review-functional-template.md): Template for the Functional Review component of the Skills Acceptance Process.
- [Combined Template](/docs/skill-development/marketplace-submission/skills-acceptance-process/skills-review-template.md): Complete template for the Skills Acceptance Process.
- [Skill README.md](/docs/skill-development/marketplace-submission/skill-readme-md.md): The README.md file in each Skill repository is used to provide an overview of the Skill and its functionality.
- [FAQ](/docs/skill-development/faq.md)
