`, srcset, and `loading="lazy"` for performance.
+
+**Performance** - Minimize DOM depth, optimize images, defer non-critical scripts, use semantic elements.
+
+## Quick Patterns
+
+### Semantic Page Structure
+```html
+
+
+
+
+
+ Page Title
+
+
+
+
+
+
+
+
+```
+
+### Accessible Form
+```html
+
+```
+
+### Responsive Image
+```html
+
+
+
+
+
+```
+
+## Troubleshooting
+
+- **Validation**: W3C Validator (validator.w3.org), check unclosed tags, verify nesting
+- **Accessibility**: Lighthouse audit, screen reader testing, keyboard nav, color contrast
+- **Compatibility**: Can I Use (caniuse.com), feature detection, provide fallbacks
+
+## Key Standards
+
+- **WHATWG HTML Living Standard**: https://html.spec.whatwg.org/
+- **WCAG Accessibility**: https://www.w3.org/WAI/WCAG21/quickref/
+- **MDN Web Docs**: https://developer.mozilla.org/en-US/docs/Web/HTML
+
+---
diff --git a/skills/html-coder/references/add-css-style.md b/skills/html-coder/references/add-css-style.md
new file mode 100644
index 000000000..be828ad21
--- /dev/null
+++ b/skills/html-coder/references/add-css-style.md
@@ -0,0 +1,591 @@
+# Adding CSS Styling to HTML
+
+Complete guide to integrating CSS (Cascading Style Sheets) with HTML for presentation and layout.
+
+## Methods of Adding CSS
+
+### 1. External Stylesheet (Recommended)
+
+**Best for**: Production websites, reusable styles, maintainable code
+
+```html
+
+
+
+
+ Page Title
+
+
+
+ Heading
+ Content
+
+
+```
+
+**Advantages**:
+- ✅ Separates content from presentation
+- ✅ Reusable across multiple pages
+- ✅ Cached by browser (faster page loads)
+- ✅ Easier to maintain
+- ✅ Can be developed separately
+
+**Multiple stylesheets**:
+```html
+
+
+
+```
+
+### 2. Internal Stylesheet
+
+**Best for**: Single-page applications, unique page-specific styles, email HTML
+
+```html
+
+
+
+
+ Page Title
+
+
+
+ Heading
+ Highlighted text
+
+
+```
+
+**Advantages**:
+- ✅ No external HTTP request
+- ✅ Good for critical above-the-fold CSS
+- ✅ Useful for email templates
+
+**Disadvantages**:
+- ❌ Not reusable across pages
+- ❌ Not cached separately
+- ❌ Increases HTML file size
+
+### 3. Inline Styles
+
+**Best for**: Dynamic styles, urgent overrides, email HTML (when required)
+
+```html
+Important text
+
+
+
Box Title
+
Box content
+
+```
+
+**Advantages**:
+- ✅ Highest specificity (overrides other styles)
+- ✅ No class/ID needed
+- ✅ Works in HTML emails
+
+**Disadvantages**:
+- ❌ Hard to maintain
+- ❌ Not reusable
+- ❌ Mixes content and presentation
+- ❌ Increases HTML file size
+- ❌ Can't use pseudo-classes/elements
+
+**When to use**:
+- Dynamically generated styles via JavaScript
+- Email HTML templates
+- Quick testing (remove before production)
+
+## Link Element Attributes
+
+### Basic Link Element
+
+```html
+
+```
+
+### Complete Link Element
+
+```html
+
+```
+
+### Important Attributes
+
+| Attribute | Purpose | Values |
+|-----------|---------|--------|
+| `rel` | Relationship | `stylesheet` (required) |
+| `href` | File location | URL or path |
+| `type` | MIME type | `text/css` (optional, default) |
+| `media` | Media query | `screen`, `print`, `all`, custom query |
+| `title` | Stylesheet name | Text (for alternate stylesheets) |
+| `crossorigin` | CORS mode | `anonymous`, `use-credentials` |
+| `integrity` | SRI hash | Hash value for security |
+
+## Media Queries in HTML
+
+### Responsive Stylesheets
+
+Load different CSS files for different devices:
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### Common Media Queries
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## CSS Loading Strategies
+
+### Critical CSS
+
+Inline critical above-the-fold CSS:
+
+```html
+
+
+
+
+
+
+
+```
+
+### Async CSS Loading
+
+Load non-critical CSS asynchronously:
+
+```html
+
+
+
+
+
+```
+
+### Deferred Loading
+
+Load CSS after page load:
+
+```html
+
+```
+
+## CSS with Classes and IDs
+
+### Using Classes
+
+**HTML**:
+```html
+
+
Card Title
+
Card content goes here.
+
Action
+
+```
+
+**CSS (external file)**:
+```css
+.card {
+ background: white;
+ border-radius: 8px;
+ padding: 1.5rem;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
+}
+
+.card-title {
+ font-size: 1.5rem;
+ margin-top: 0;
+}
+
+.card-content {
+ color: #666;
+}
+
+.btn {
+ padding: 0.5rem 1rem;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+}
+
+.btn-primary {
+ background-color: #007bff;
+ color: white;
+}
+```
+
+### Using IDs
+
+**HTML**:
+```html
+
+```
+
+**CSS**:
+```css
+#main-header {
+ background-color: #333;
+ color: white;
+ padding: 1rem;
+}
+
+#primary-nav {
+ display: flex;
+ gap: 1rem;
+}
+```
+
+**When to use**:
+- **Classes**: Reusable styles (preferred for styling)
+- **IDs**: Unique elements, JavaScript selection, anchor links
+
+## CSS Frameworks Integration
+
+### Bootstrap
+
+```html
+
+
+
+
+
+ Bootstrap Page
+
+
+
+
+
+
+
+
+
+
Hello Bootstrap
+ Click Me
+
+
+
+
+
+
+```
+
+### Tailwind CSS
+
+```html
+
+
+
+
+
+ Tailwind Page
+
+
+
+
+
+
+
Hello Tailwind
+
+ Click Me
+
+
+
+
+```
+
+## CSS Variables in HTML
+
+Define CSS custom properties inline:
+
+```html
+
+
+ Text using CSS variables
+
+
+```
+
+**Better approach** (in `
+```
+
+## Import Statements
+
+### @import in HTML
+
+```html
+
+```
+
+**Note**: `@import` is slower than ` ` because it blocks parallel downloads. Prefer multiple ` ` tags.
+
+## Conditional CSS
+
+### Browser-Specific Styles
+
+```html
+
+
+
+```
+
+**Note**: Conditional comments only work in IE ≤ 9 (obsolete).
+
+### Modern Feature Detection
+
+Use CSS feature queries in stylesheets:
+
+```css
+/* Modern grid layout */
+@supports (display: grid) {
+ .container {
+ display: grid;
+ }
+}
+
+/* Fallback for older browsers */
+@supports not (display: grid) {
+ .container {
+ display: flex;
+ }
+}
+```
+
+## CSS Reset/Normalize
+
+Include before custom styles:
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+
+## Performance Optimization
+
+### Resource Hints
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+### Font Loading
+
+```html
+
+
+
+
+
+
+
+
+```
+
+## Best Practices
+
+### ✅ Do
+
+1. **Use external stylesheets** for reusable styles
+2. **Place ` ` in ``** for proper rendering
+3. **Use meaningful class names** (descriptive, not presentational)
+4. **Group related styles** in separate files
+5. **Minimize CSS file size** (minify for production)
+6. **Use CSS variables** for consistent theming
+7. **Implement mobile-first** responsive design
+8. **Load critical CSS inline** for faster initial render
+9. **Use `preload` for critical resources**
+10. **Version your CSS files** for cache busting (`styles.css?v=1.2`)
+
+### ❌ Don't
+
+1. **Don't use inline styles** extensively (hard to maintain)
+2. **Don't use `@import`** in production (blocks parallel downloads)
+3. **Don't override styles excessively** (indicates poor architecture)
+4. **Don't use !important** unless absolutely necessary
+5. **Don't write non-semantic class names** (`red-text`, `big-margin`)
+6. **Don't load unused CSS** (remove unused framework code)
+7. **Don't forget print styles** if printing is relevant
+8. **Don't mix CSS with HTML** attributes (use classes instead)
+9. **Don't use deprecated CSS** prefixes without autoprefixer
+10. **Don't forget to minify** CSS for production
+
+## Complete Example
+
+```html
+
+
+
+
+
+ Complete CSS Integration Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Article Title
+ Article content goes here.
+
+
+
+
+
+
+```
+
+## Resources
+
+- **MDN CSS Reference**: https://developer.mozilla.org/en-US/docs/Web/CSS
+- **CSS Tricks**: https://css-tricks.com/
+- **Can I Use**: https://caniuse.com/ (browser support)
+- **CSS Validator**: https://jigsaw.w3.org/css-validator/
+- **Google Fonts**: https://fonts.google.com/
+- **Normalize.css**: https://necolas.github.io/normalize.css/
diff --git a/skills/html-coder/references/add-javascript.md b/skills/html-coder/references/add-javascript.md
new file mode 100644
index 000000000..c980fcb58
--- /dev/null
+++ b/skills/html-coder/references/add-javascript.md
@@ -0,0 +1,792 @@
+# Adding JavaScript to HTML
+
+Complete guide to integrating JavaScript with HTML for interactivity and dynamic behavior.
+
+## Methods of Adding JavaScript
+
+### 1. External JavaScript File (Recommended)
+
+**Best for**: Production websites, reusable code, maintainable applications
+
+```html
+
+
+
+
+ Page Title
+
+
+ Hello World
+ Change Text
+
+
+
+
+
+```
+
+**script.js**:
+```javascript
+document.getElementById('changeBtn').addEventListener('click', function() {
+ document.getElementById('heading').textContent = 'Hello JavaScript!';
+});
+```
+
+**Advantages**:
+- ✅ Separates content from behavior
+- ✅ Reusable across multiple pages
+- ✅ Cached by browser (faster page loads)
+- ✅ Easier to maintain and debug
+- ✅ Can be developed separately
+- ✅ Cleaner HTML
+
+### 2. Inline JavaScript
+
+**Best for**: Small scripts, event handlers, quick testing
+
+```html
+
+
+
+
+ Inline JavaScript
+
+
+ Hello World
+
+ Change Text
+ Show Alert
+
+
+
+
+```
+
+**Advantages**:
+- ✅ Quick to implement
+- ✅ No external HTTP request
+- ✅ Good for small, page-specific scripts
+
+**Disadvantages**:
+- ❌ Not reusable across pages
+- ❌ Harder to maintain
+- ❌ Violates Content Security Policy (CSP)
+- ❌ Mixes content and behavior
+
+### 3. Inline Event Handlers
+
+**Best for**: Quick prototypes, simple interactions (not recommended for production)
+
+```html
+
+Click Me
+
+
+Greet John
+
+
+
+
+Click
+```
+
+**Better approach** (external event listeners):
+```html
+Click Me
+
+
+```
+
+## Script Element Attributes
+
+### Basic Script Element
+
+```html
+
+```
+
+### Important Attributes
+
+| Attribute | Purpose | Values |
+|-----------|---------|--------|
+| `src` | External file path | URL or relative path |
+| `type` | MIME type | `text/javascript` (default), `module` |
+| `async` | Async loading | Boolean (no value needed) |
+| `defer` | Deferred loading | Boolean (no value needed) |
+| `crossorigin` | CORS mode | `anonymous`, `use-credentials` |
+| `integrity` | SRI hash | Hash for security verification |
+| `nomodule` | Fallback for old browsers | Boolean |
+| `referrerpolicy` | Referrer header | `no-referrer`, `origin`, etc. |
+
+## Script Loading Strategies
+
+### 1. Default Loading (Blocking)
+
+```html
+
+
+
+
+```
+
+**Behavior**:
+- Stops HTML parsing
+- Downloads script
+- Executes script immediately
+- Resumes HTML parsing
+
+**When to use**: Never (use `defer` or `async` instead)
+
+### 2. Defer Loading (Recommended for Most Scripts)
+
+```html
+
+
+
+
+```
+
+**Behavior**:
+1. HTML parsing continues
+2. Script downloads in parallel
+3. Script executes after HTML parsing completes
+4. Maintains script order
+
+**When to use**:
+- ✅ Scripts that manipulate DOM
+- ✅ Scripts that depend on full HTML
+- ✅ Multiple scripts with dependencies
+- ✅ Most common use case
+
+### 3. Async Loading
+
+```html
+
+
+
+
+```
+
+**Behavior**:
+1. HTML parsing continues
+2. Script downloads in parallel
+3. Script executes as soon as downloaded (pauses HTML parsing)
+4. Does NOT maintain script order
+
+**When to use**:
+- ✅ Independent scripts (analytics, ads)
+- ✅ Scripts that don't depend on DOM
+- ✅ Scripts that don't depend on other scripts
+- ❌ NOT for scripts with dependencies
+
+### 4. Script at End of Body (Traditional)
+
+```html
+
+
+
+ Page Title
+
+
+ Content
+ More content
+
+
+
+
+
+```
+
+**When to use**:
+- ✅ When `defer` is not available
+- ✅ Ensures DOM is fully loaded
+- ❌ Less efficient than `defer` in ``
+
+### Comparison Table
+
+| Method | Parsing | Download | Execution | Order | Use Case |
+|--------|---------|----------|-----------|-------|----------|
+| Default | Blocks | Immediate | Immediate | Yes | ❌ Avoid |
+| `defer` | Continues | Parallel | After parse | Yes | ✅ DOM manipulation |
+| `async` | Continues | Parallel | ASAP | No | ✅ Independent scripts |
+| End of body | Continues | After parse | Immediate | Yes | ✅ Fallback method |
+
+## ES6 Modules
+
+### Module Script
+
+```html
+
+
+
+
+ ES6 Modules
+
+
+
+
+
+
+
+
+```
+
+**main.js**:
+```javascript
+import { greet } from './utils.js';
+import { render } from './render.js';
+
+greet('World');
+render();
+```
+
+**utils.js**:
+```javascript
+export function greet(name) {
+ console.log(`Hello, ${name}!`);
+}
+```
+
+### Module Features
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+**Module characteristics**:
+- ✅ Automatically in strict mode
+- ✅ Automatically deferred
+- ✅ Have their own scope (not global)
+- ✅ Can use `import` and `export`
+- ✅ Only execute once (even if imported multiple times)
+
+## JavaScript Placement Best Practices
+
+### In `` with `defer`
+
+```html
+
+
+
+
+ Page Title
+
+
+
+
+
+
+ Content loads without blocking
+
+
+```
+
+### Multiple Scripts with Dependencies
+
+```html
+
+
+
+
+
+
+```
+
+### Critical vs Non-Critical Scripts
+
+```html
+
+
+
+
+
+
+
+
+```
+
+## Data Attributes for JavaScript
+
+### Storing Data in HTML
+
+```html
+
+ View Profile
+
+
+
+```
+
+### Complex Data
+
+```html
+
+
+
+```
+
+## Common Integration Patterns
+
+### 1. DOM Content Loaded
+
+Wait for HTML to fully load:
+
+```html
+
+```
+
+### 2. Window Load Event
+
+Wait for everything (including images):
+
+```html
+
+```
+
+### 3. Event Delegation
+
+```html
+
+ Item 1
+ Item 2
+ Item 3
+
+
+
+```
+
+### 4. Form Handling
+
+```html
+
+
+
+```
+
+## CDN Integration
+
+### Popular Libraries
+
+```html
+
+
+
+
+ CDN JavaScript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### CDN Best Practices
+
+```html
+
+
+
+
+
+
+```
+
+## Script Loading Performance
+
+### Preloading Scripts
+
+```html
+
+
+
+
+
+
+
+```
+
+### DNS Prefetch
+
+```html
+
+
+
+
+
+
+
+```
+
+### Preconnect
+
+```html
+
+
+
+
+
+
+
+```
+
+## Content Security Policy (CSP)
+
+### Strict CSP
+
+```html
+
+
+
+
+```
+
+### Allowing specific sources
+
+```html
+
+```
+
+### Using nonce
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+## JavaScript Framework Integration
+
+### React
+
+```html
+
+
+
+
+ React App
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### Vue.js
+
+```html
+
+
+
+
+ Vue App
+
+
+
+
+
{{ message }}
+ Click Me
+
+
+
+
+
+```
+
+## Error Handling
+
+### Global Error Handler
+
+```html
+
+```
+
+### Try-Catch Blocks
+
+```html
+
+```
+
+## Best Practices
+
+### ✅ Do
+
+1. **Use `defer` for regular scripts** in ``
+2. **Use `async` for independent scripts** (analytics, ads)
+3. **Place scripts before closing ``** if `defer` not supported
+4. **Use external files** for reusable code
+5. **Use event listeners** instead of inline handlers
+6. **Validate user input** on both client and server
+7. **Use `type="module"`** for modern JavaScript
+8. **Implement error handling** for better UX
+9. **Minify JavaScript** for production
+10. **Use SRI** for CDN scripts (`integrity` attribute)
+11. **Separate concerns** (HTML, CSS, JS)
+12. **Use data attributes** for passing data from HTML to JS
+13. **Implement CSP** for security
+14. **Test across browsers** for compatibility
+15. **Use descriptive function/variable names**
+
+### ❌ Don't
+
+1. **Don't use inline event handlers** (violates CSP)
+2. **Don't block HTML parsing** (avoid scripts in `` without `defer`)
+3. **Don't use `document.write()`** (deprecated)
+4. **Don't trust user input** (always validate/sanitize)
+5. **Don't use global variables excessively** (use modules/closures)
+6. **Don't load unnecessary libraries** (increases page size)
+7. **Don't ignore browser console errors**
+8. **Don't use `eval()`** (security risk)
+9. **Don't forget fallbacks** for CDN resources
+10. **Don't mix inline and external code** unnecessarily
+11. **Don't forget to remove `console.log()`** in production
+12. **Don't use deprecated features** (check browser compatibility)
+13. **Don't ignore accessibility** (keyboard navigation, screen readers)
+14. **Don't forget mobile optimization**
+15. **Don't hardcode sensitive data** in JavaScript
+
+## Complete Example
+
+```html
+
+
+
+
+
+ Complete JavaScript Integration
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Change Text
+
+
+
+
+
+
+
+
+
+```
+
+**app.js**:
+```javascript
+// Wait for DOM to be ready (note: defer already ensures this)
+document.addEventListener('DOMContentLoaded', function() {
+ // Button click handler
+ const btn = document.getElementById('changeBtn');
+ btn.addEventListener('click', function() {
+ const newText = this.dataset.text;
+ document.getElementById('heading').textContent = newText;
+ });
+
+ // Form submission handler
+ const form = document.getElementById('contactForm');
+ form.addEventListener('submit', function(e) {
+ e.preventDefault();
+
+ const formData = new FormData(this);
+ console.log('Form submitted:', Object.fromEntries(formData));
+
+ // Process form data
+ // submitForm(formData);
+ });
+});
+```
+
+## Resources
+
+- **MDN JavaScript Guide**: https://developer.mozilla.org/en-US/docs/Web/JavaScript
+- **JavaScript.info**: https://javascript.info/
+- **Can I Use**: https://caniuse.com/ (browser support)
+- **JSHint**: https://jshint.com/ (code quality)
+- **ESLint**: https://eslint.org/ (linting)
+- **Babel**: https://babeljs.io/ (transpiler)
+- **SRI Hash Generator**: https://www.srihash.org/
diff --git a/skills/html-coder/references/attributes.md b/skills/html-coder/references/attributes.md
new file mode 100644
index 000000000..2cd9347d4
--- /dev/null
+++ b/skills/html-coder/references/attributes.md
@@ -0,0 +1,368 @@
+# HTML Attributes Reference
+
+Comprehensive guide to common HTML attributes, input types, script configurations, and meta element usage.
+
+## Input Types (` `)
+
+The `type` attribute determines the behavior and appearance of input controls.
+
+### Text-Based Input Types
+
+| Type | Purpose | Key Attributes |
+|------|---------|----------------|
+| `text` | Single-line text (default) | `maxlength`, `minlength`, `pattern`, `placeholder`, `size` |
+| `password` | Obscured text for passwords | `maxlength`, `minlength`, `pattern` |
+| `email` | Email address validation | `multiple`, `pattern`, `placeholder` |
+| `url` | URL validation | `pattern`, `placeholder` |
+| `tel` | Telephone number input | `pattern`, `placeholder` |
+| `search` | Search field with clear button | `placeholder`, `list` |
+| `textarea` | Multi-line text (separate element) | `rows`, `cols`, `maxlength`, `wrap` |
+
+### Date and Time Input Types
+
+| Type | Format | Example |
+|------|--------|---------|
+| `date` | Year-month-day | 2024-01-15 |
+| `datetime-local` | Date and time, no timezone | 2024-01-15T14:30 |
+| `month` | Year and month | 2024-01 |
+| `week` | Year and week number | 2024-W03 |
+| `time` | Hours and minutes | 14:30 |
+
+**Common attributes**: `min`, `max`, `step`
+
+### Numeric Input Types
+
+| Type | Purpose | Attributes |
+|------|---------|------------|
+| `number` | Numeric input with spinner | `min`, `max`, `step` |
+| `range` | Slider control | `min`, `max`, `step` |
+
+### Selection Input Types
+
+| Type | Purpose | Usage |
+|------|---------|-------|
+| `checkbox` | Toggle option on/off | Groups by `name`, checked individually |
+| `radio` | Select one from group | Same `name` required for grouping |
+| `select` | Dropdown menu (separate element) | Contains `` elements |
+
+### File and Media Input Types
+
+| Type | Purpose | Attributes |
+|------|---------|------------|
+| `file` | File upload | `accept`, `multiple`, `capture` |
+| `color` | Color picker | `value` (hex color) |
+| `image` | Graphical submit button | `src`, `alt`, `width`, `height` |
+
+### Button Input Types
+
+| Type | Purpose | Default Behavior |
+|------|---------|-----------------|
+| `button` | Generic button | None (requires JavaScript) |
+| `submit` | Form submission | Submits form to `action` URL |
+| `reset` | Form reset (not recommended) | Resets all fields to default |
+
+### Special Input Types
+
+| Type | Purpose |
+|------|---------|
+| `hidden` | Invisible data field |
+
+### Deprecated Input Type
+
+| Type | Status | Alternative |
+|------|--------|-------------|
+| `datetime` | Deprecated | Use `datetime-local` |
+
+## Common Input Attributes
+
+### Form Control Attributes
+
+| Attribute | Valid For | Purpose |
+|-----------|-----------|---------|
+| `name` | All except image/button without form | Identifies field in form submission |
+| `value` | All | Initial/current value of control |
+| `id` | All | Unique identifier for labeling |
+| `required` | Most types | Field must be filled before submission |
+| `disabled` | All | Prevents interaction and submission |
+| `readonly` | Text-based types | Prevents editing but allows submission |
+| `autofocus` | All | Automatically focused on page load |
+| `placeholder` | Text-based types | Hint text displayed when empty |
+
+### Validation Attributes
+
+| Attribute | Valid For | Purpose |
+|-----------|-----------|---------|
+| `pattern` | Text-based types | Regular expression for validation |
+| `min` | Numeric, date/time | Minimum value |
+| `max` | Numeric, date/time | Maximum value |
+| `minlength` | Text-based types | Minimum character count |
+| `maxlength` | Text-based types | Maximum character count |
+| `step` | Numeric, date/time | Increment value (`any` allows decimals) |
+
+### Autocomplete Attributes
+
+| Attribute | Purpose | Values |
+|-----------|---------|--------|
+| `autocomplete` | Browser autofill behavior | `on`, `off`, or specific values (e.g., `name`, `email`, `tel`) |
+| `list` | Links to `` | ID of datalist element |
+| `multiple` | Multiple values | For `email` and `file` types |
+
+### Form Override Attributes
+
+Valid only for `submit` and `image` types:
+
+| Attribute | Overrides |
+|-----------|-----------|
+| `formaction` | Form's `action` |
+| `formenctype` | Form's `enctype` |
+| `formmethod` | Form's `method` |
+| `formnovalidate` | Form's validation |
+| `formtarget` | Form's `target` |
+
+### Other Input Attributes
+
+| Attribute | Valid For | Purpose |
+|-----------|-----------|---------|
+| `checked` | `checkbox`, `radio` | Initially checked state |
+| `accept` | `file` | Allowed file types (e.g., `image/*`, `.pdf`) |
+| `capture` | `file` | Media capture method (`user`, `environment`) |
+| `size` | Text-based types | Visual width in characters |
+| `src` | `image` | Image URL |
+| `alt` | `image` | Alternative text |
+| `width`, `height` | `image` | Image dimensions |
+| `dirname` | Text types | Submits text directionality (`ltr`/`rtl`) |
+
+## Script Types (`
+```
+
+Access via: `JSON.parse(document.getElementById('data').textContent)`
+
+### Script Attributes
+
+| Attribute | Purpose | Compatible With |
+|-----------|---------|-----------------|
+| `async` | Load asynchronously, execute when ready | Classic scripts, external files |
+| `defer` | Load asynchronously, execute after parsing | Classic scripts, external files |
+| `src` | External script URL | All types |
+| `integrity` | SRI hash for security verification | External files |
+| `crossorigin` | CORS mode | External files (`anonymous`, `use-credentials`) |
+| `referrerpolicy` | Referrer policy | External files |
+| `nomodule` | Skip in module-supporting browsers | Fallback scripts |
+| `blocking="render"` | Blocks rendering until loaded | Scripts in `` |
+
+**Loading Behavior Comparison**:
+
+- **No attributes**: Blocks parsing, executes immediately
+- **`async`**: Loads in parallel, executes as soon as loaded (order not guaranteed)
+- **`defer`**: Loads in parallel, executes after DOM parsing in document order
+- **`type="module"`**: Deferred by default
+
+## Meta Element Attributes
+
+### Meta Charset
+
+Specifies character encoding (must be UTF-8):
+
+```html
+
+```
+
+### Meta Name/Content Pairs
+
+Common `name` values:
+
+| Name | Purpose | Content Examples |
+|------|---------|------------------|
+| `description` | Page description for search engines | Max 155 characters |
+| `keywords` | Keywords (largely ignored by search engines) | Comma-separated list |
+| `author` | Document author | Name or organization |
+| `viewport` | Mobile viewport configuration | `width=device-width, initial-scale=1` |
+| `theme-color` | Browser UI color | Hex color (`#4285f4`) |
+| `color-scheme` | Preferred color scheme | `light`, `dark`, `light dark` |
+| `referrer` | Referrer policy | `no-referrer`, `origin`, etc. |
+| `robots` | Search engine indexing instructions | `index,follow`, `noindex`, etc. |
+| `generator` | Software that generated the page | Application name |
+
+### Meta HTTP-Equiv
+
+Simulates HTTP headers:
+
+| http-equiv | Purpose | Content Examples |
+|------------|---------|------------------|
+| `content-type` | MIME type and charset (deprecated, use ` `) | `text/html; charset=UTF-8` |
+| `refresh` | Auto-refresh or redirect | `5`, `3;url=https://example.com` |
+| `content-security-policy` | CSP directives | `default-src 'self'` |
+| `x-ua-compatible` | IE compatibility mode | `IE=edge` |
+
+### Viewport Configuration
+
+```html
+
+```
+
+**Viewport Properties**:
+
+| Property | Values | Purpose |
+|----------|--------|---------|
+| `width` | Pixels or `device-width` | Viewport width |
+| `height` | Pixels or `device-height` | Viewport height |
+| `initial-scale` | 0-10 | Initial zoom level |
+| `minimum-scale` | 0-10 | Minimum zoom level |
+| `maximum-scale` | 0-10 | Maximum zoom level |
+| `user-scalable` | `yes`, `no` | Allow pinch zoom |
+| `viewport-fit` | `auto`, `contain`, `cover` | Safe area insets (notches) |
+| `interactive-widget` | `resizes-visual`, `resizes-content`, `overlays-content` | On-screen keyboard behavior |
+
+## Link Relationship Types (` `)
+
+| rel Value | Purpose | Example |
+|-----------|---------|---------|
+| `stylesheet` | External CSS file | ` ` |
+| `icon` | Favicon | ` ` |
+| `apple-touch-icon` | iOS home screen icon | ` ` |
+| `manifest` | Web app manifest | ` ` |
+| `alternate` | Alternate version | ` ` |
+| `canonical` | Preferred URL | ` ` |
+| `preload` | Priority resource loading | ` ` |
+| `prefetch` | Low-priority future resource | ` ` |
+| `preconnect` | Early connection to origin | ` ` |
+| `dns-prefetch` | Early DNS lookup | ` ` |
+| `modulepreload` | Preload ES module | ` ` |
+| `author` | Author information | ` ` |
+| `license` | License information | ` ` |
+| `next` | Next page in series | ` ` |
+| `prev` | Previous page in series | ` ` |
+
+## Form Attributes
+
+### Form Element Attributes
+
+| Attribute | Purpose | Values |
+|-----------|---------|--------|
+| `action` | Submission URL | URL |
+| `method` | HTTP method | `get`, `post` |
+| `enctype` | Encoding type | `application/x-www-form-urlencoded`, `multipart/form-data`, `text/plain` |
+| `target` | Where to display response | `_self`, `_blank`, `_parent`, `_top`, frame name |
+| `autocomplete` | Form autofill | `on`, `off` |
+| `novalidate` | Skip validation | Boolean |
+| `accept-charset` | Character encodings | `UTF-8` |
+
+## Autocomplete Values
+
+Detailed autocomplete tokens for better autofill:
+
+**Personal Information**:
+- `name`, `given-name`, `family-name`, `additional-name`, `honorific-prefix`, `honorific-suffix`, `nickname`
+
+**Contact Information**:
+- `email`, `tel`, `tel-country-code`, `tel-national`, `tel-area-code`, `tel-local`
+
+**Address Information**:
+- `street-address`, `address-line1`, `address-line2`, `address-level1` (state/province), `address-level2` (city), `postal-code`, `country`, `country-name`
+
+**Payment Information**:
+- `cc-name`, `cc-number`, `cc-exp`, `cc-exp-month`, `cc-exp-year`, `cc-csc`, `cc-type`
+- `transaction-currency`, `transaction-amount`
+
+**Account Information**:
+- `username`, `new-password`, `current-password`, `one-time-code`
+
+**Other**:
+- `bday`, `bday-day`, `bday-month`, `bday-year`, `sex`, `url`, `photo`, `organization`, `job-title`
+
+**Section and Shipping**:
+- Prefix with `shipping` or `billing` (e.g., `shipping email`, `billing address-line1`)
+
+## Global Attributes
+
+Applicable to all HTML elements:
+
+| Attribute | Purpose |
+|-----------|---------|
+| `id` | Unique identifier |
+| `class` | CSS class name(s) |
+| `style` | Inline CSS styles |
+| `title` | Advisory tooltip text |
+| `lang` | Language code |
+| `dir` | Text direction (`ltr`, `rtl`, `auto`) |
+| `hidden` | Element hidden from display |
+| `tabindex` | Tab navigation order |
+| `accesskey` | Keyboard shortcut |
+| `contenteditable` | Editable content (`true`, `false`) |
+| `draggable` | Draggable element (`true`, `false`) |
+| `spellcheck` | Spell checking (`true`, `false`) |
+| `translate` | Translation hint (`yes`, `no`) |
+| `data-*` | Custom data attributes |
+
+## ARIA Attributes
+
+Improve accessibility (prefix with `aria-`):
+
+**Roles**: `role="navigation"`, `role="main"`, `role="complementary"`, `role="button"`, `role="alert"`
+
+**States/Properties**:
+- `aria-label` - Accessible name
+- `aria-describedby` - Description reference
+- `aria-labelledby` - Label reference
+- `aria-hidden` - Hide from screen readers
+- `aria-live` - Live region announcements
+- `aria-expanded` - Expanded state
+- `aria-checked` - Checked state
+- `aria-selected` - Selected state
+- `aria-disabled` - Disabled state
+
+## Event Attributes
+
+JavaScript event handlers (use cautiously, prefer addEventListener):
+
+**Mouse Events**: `onclick`, `ondblclick`, `onmousedown`, `onmouseup`, `onmouseover`, `onmouseout`, `onmousemove`
+
+**Keyboard Events**: `onkeydown`, `onkeyup`, `onkeypress`
+
+**Form Events**: `onsubmit`, `onchange`, `oninput`, `onfocus`, `onblur`, `onreset`
+
+**Media Events**: `onplay`, `onpause`, `onended`, `onvolumechange`
+
+**Window Events**: `onload`, `onunload`, `onresize`, `onscroll`, `onerror`
+
+## Best Practices
+
+1. **Use semantic attributes**: Choose `type="email"` over `type="text"` with pattern
+2. **Always include labels**: Use `` with form controls
+3. **Validate appropriately**: Use HTML5 validation before JavaScript
+4. **Provide accessible names**: Use `aria-label` when labels aren't visible
+5. **Be specific with autocomplete**: Use detailed tokens for better UX
+6. **Avoid inline event handlers**: Use `addEventListener()` instead
+7. **Use `defer` for scripts**: Better performance than blocking scripts
+8. **Set proper viewport**: Essential for responsive mobile design
+9. **Include meta description**: Improves SEO and search result display
+10. **Use data attributes wisely**: For JavaScript-only data, not visible content
+
+## Resources
+
+- [MDN: Input Types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
+- [MDN: Input Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes)
+- [MDN: Script Element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script)
+- [MDN: Meta Element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta)
+- [MDN: Link Types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)
+- [MDN: Autocomplete Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete)
+- [MDN: Global Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes)
diff --git a/skills/html-coder/references/essentials.md b/skills/html-coder/references/essentials.md
new file mode 100644
index 000000000..c4f63c6a7
--- /dev/null
+++ b/skills/html-coder/references/essentials.md
@@ -0,0 +1,414 @@
+# HTML Essentials
+
+Essential HTML concepts, techniques, and best practices for modern web development.
+
+## HTML Comments
+
+Comments add notes to code without affecting display. Browsers ignore comments.
+
+**Syntax**:
+```html
+
+
+
+```
+
+**Usage**:
+- Add explanatory notes about code
+- Temporarily disable HTML without deleting it
+- Document complex sections
+- Leave notes for collaborators
+
+**Rules**:
+- Can be placed before/after DOCTYPE and ``
+- Can be used as content in most elements
+- **Cannot** be used inside tags (e.g., within attributes)
+- **Cannot** be nested
+- In raw-text/RCDATA elements like `
+```
+
+**Usage**:
+- Must start with `data-`
+- Followed by at least one character (no uppercase)
+- CamelCase in JavaScript (data-user-id → dataset.userId)
+- Ideal for passing data from HTML to JavaScript
+- Better than using class names for data storage
+
+---
+
+### `dir`
+
+**Purpose**: Text directionality
+
+**Values**:
+- `ltr` - Left-to-right (default for most languages)
+- `rtl` - Right-to-left (Arabic, Hebrew)
+- `auto` - Browser determines based on content
+
+**Example**:
+```html
+English text (left to right)
+مرحبا (right to left)
+Mixed content: Hello مرحبا
+```
+
+**Usage**:
+- Inherit to all child elements
+- Set on `` for entire document
+- Use `auto` for user-generated content with unknown direction
+
+---
+
+### `draggable`
+
+**Purpose**: Enable drag-and-drop functionality
+
+**Values**:
+- `true` - Element is draggable
+- `false` - Element is not draggable
+- `auto` - Browser default (images and links draggable)
+
+**Example**:
+```html
+Drag me!
+
+```
+
+**Usage**:
+- Requires JavaScript drag-and-drop event handlers
+- Events: `dragstart`, `drag`, `dragend`, `dragenter`, `dragleave`, `dragover`, `drop`
+
+---
+
+### `enterkeyhint`
+
+**Purpose**: Customize Enter key label on virtual keyboards
+
+**Values**:
+- `enter` - Default Enter key
+- `done` - "Done" label
+- `go` - "Go" label
+- `next` - "Next" label
+- `previous` - "Previous" label
+- `search` - "Search" label
+- `send` - "Send" label
+
+**Example**:
+```html
+
+
+
+```
+
+**Usage**: Mobile-specific, affects virtual keyboard appearance
+
+---
+
+### `hidden`
+
+**Purpose**: Hide element from display
+
+**Values**: Boolean (no value needed)
+
+**Example**:
+```html
+This is hidden
+Not displayed on page
+```
+
+**Usage**:
+- Equivalent to `display: none` in CSS
+- Element not rendered and not accessible
+- Screen readers ignore hidden content
+- Use `aria-hidden="true"` to hide from screen readers but keep visible
+- Can be toggled with JavaScript
+
+---
+
+### `id`
+
+**Purpose**: Unique identifier for element
+
+**Values**: Unique string (must be unique per document)
+
+**Example**:
+```html
+
+Submit
+Article content
+```
+
+**Usage**:
+- Must be unique within the document
+- Can be referenced by CSS (`#main-header`) and JavaScript
+- Used for fragment identifiers (`#main-header` in URLs)
+- Used with `` to associate labels with inputs
+- Convention: lowercase with hyphens or camelCase
+- May start with a number, but such IDs need escaping in some CSS selectors (for example, `#\31 23` to select `id="123"`)
+
+---
+
+### `inert`
+
+**Purpose**: Make element non-interactive
+
+**Values**: Boolean (no value needed)
+
+**Example**:
+```html
+
+```
+
+**Usage**:
+- Element and descendants cannot receive focus
+- Element and descendants removed from tab order
+- Element and descendants ignored by screen readers
+- Useful for modals (inert background content)
+- Relatively new attribute (check browser support)
+
+---
+
+### `inputmode`
+
+**Purpose**: Hint for virtual keyboard type
+
+**Values**:
+- `none` - No virtual keyboard
+- `text` - Standard text keyboard (default)
+- `decimal` - Numeric keyboard with decimal
+- `numeric` - Numeric keyboard
+- `tel` - Telephone number pad
+- `search` - Search-optimized keyboard
+- `email` - Email keyboard (@ symbol)
+- `url` - URL keyboard (/ and .com)
+
+**Example**:
+```html
+
+
+
+```
+
+**Usage**:
+- Mobile-specific optimization
+- Use with `type="text"` to get specific keyboards without validation
+- Better UX than wrong keyboard type
+
+---
+
+### `is`
+
+**Purpose**: Specify custom element name (Web Components)
+
+**Values**: Custom element name
+
+**Example**:
+```html
+Click Me
+
+```
+
+**Usage**:
+- Used with Web Components
+- Extends built-in elements
+- Requires JavaScript custom element definition
+
+---
+
+### `itemid`, `itemprop`, `itemref`, `itemscope`, `itemtype`
+
+**Purpose**: Microdata attributes for structured data
+
+**Example**:
+```html
+
+
John Doe
+
Software Engineer
+
Email
+
+
+
+ Product Name
+ $29.99
+
+```
+
+**Usage**:
+- SEO: helps search engines understand content
+- Use with Schema.org types
+- Alternative to JSON-LD for structured data
+
+---
+
+### `lang`
+
+**Purpose**: Specify language of element content
+
+**Values**: Language code (ISO 639-1)
+
+**Example**:
+```html
+
+Hola, ¿cómo estás?
+Bonjour, comment ça va?
+Guten Tag!
+```
+
+**Common Language Codes**:
+- `en` - English
+- `en-US` - English (United States)
+- `en-GB` - English (United Kingdom)
+- `es` - Spanish
+- `fr` - French
+- `de` - German
+- `it` - Italian
+- `pt` - Portuguese
+- `ja` - Japanese
+- `zh` - Chinese
+- `ar` - Arabic
+- `ru` - Russian
+
+**Usage**:
+- Set on `` for primary page language
+- Override for sections in different languages
+- Helps screen readers with pronunciation
+- Assists search engines and translation tools
+
+---
+
+### `nonce`
+
+**Purpose**: Cryptographic nonce for Content Security Policy (CSP)
+
+**Values**: Random string (unique per page load)
+
+**Example**:
+```html
+
+
+
+
+
+
+
+
+```
+
+**Usage**:
+- Security feature for CSP
+- Server must generate random nonce per page load
+- Only scripts/styles with matching nonce execute
+- Prevents XSS attacks
+
+---
+
+### `part`
+
+**Purpose**: Expose shadow DOM parts for styling (Web Components)
+
+**Values**: Space-separated part names
+
+**Example**:
+```html
+
+ Click Me
+ 🔔
+
+
+
+```
+
+**Usage**: Advanced feature for Web Components
+
+---
+
+### `slot`
+
+**Purpose**: Assign content to named slot in Web Components
+
+**Values**: Slot name
+
+**Example**:
+```html
+
+ Card Title
+ Card content goes here.
+ Action
+
+```
+
+**Usage**: Used with Shadow DOM and Web Components
+
+---
+
+### `spellcheck`
+
+**Purpose**: Enable/disable spell checking
+
+**Values**:
+- `true` - Enable spell checking
+- `false` - Disable spell checking
+
+**Example**:
+```html
+
+
+Editable with spellcheck
+```
+
+**Usage**:
+- Works on editable content
+- Applies to ` `, `