javascript
Personal backup of Claude Code skills and plugins
5 stars0 forksUpdated Jan 26, 2026
npx skills add https://github.com/vapvarun/claude-backup --skill javascriptSKILL.md
JavaScript Skill
Instructions
When writing JavaScript:
1. Modern Syntax
// Use const by default, let when needed
const API_URL = 'https://api.example.com';
let count = 0;
// Arrow functions
const add = (a, b) => a + b;
const greet = name => `Hello, ${name}!`;
// Destructuring
const { name, email } = user;
const [first, second, ...rest] = items;
// Spread operator
const newArray = [...oldArray, newItem];
const newObject = { ...oldObject, newProp: value };
// Template literals
const message = `User ${name} has ${count} items`;
// Optional chaining
const city = user?.address?.city;
// Nullish coalescing
const value = input ?? defaultValue;
2. Async/Await
// Async function
async function fetchData(url) {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
console.error('Fetch failed:', error);
throw error;
}
}
// Parallel requests
async function fetchAll(urls) {
const promises = urls.map(url => fetch(url));
const responses = await Promise.all(promises);
return Promise.all(responses.map(r => r.json()));
}
// With timeout
async function fetchWithTimeout(url, timeout = 5000) {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), timeout);
try {
const response = await fetch(url, { signal: controller.signal });
return await response.json();
} finally {
clearTimeout(timeoutId);
}
}
3. Array Methods
const users = [
{ id: 1, name: 'Alice', age: 25, active: true },
{ id: 2, name: 'Bob', age: 30, active: false },
{ id: 3, name: 'Charlie', age: 35, active: true },
];
// map - transform items
const names = users.map(user => user.name);
// filter - select items
const activeUsers = users.filter(user => user.active);
// find - get first match
const bob = users.find(user => user.name === 'Bob');
// some/every - check conditions
const hasActive = users.some(user => user.active);
const allActive = users.every(user => user.active);
// reduce - aggregate
const totalAge = users.reduce((sum, user) => sum + user.age, 0);
// Chaining
const activeNames = users
.filter(user => user.active)
.map(user => user.name)
.sort();
4. DOM Manipulation
// Selecting elements
const element = document.querySelector('.class');
const elements = document.querySelectorAll('.class');
// Creating elements
const div = document.createElement('div');
div.className = 'card';
div.innerHTML = `
<h2>${title}</h2>
<p>${description}</p>
`;
// Event handling
element.addEventListener('click', (event) => {
event.preventDefault();
// Handle click
});
// Event delegation
document.querySelector('.list').addEventListener('click', (event) => {
if (event.target.matches('.item')) {
handleItemClick(event.target);
}
});
// IntersectionObserver (lazy loading, animations)
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
observer.unobserve(entry.target);
}
});
}, { threshold: 0.1 });
document.querySelectorAll('.animate').forEach(el => observer.observe(el));
5. Classes
class User {
#privateField; // Private field
constructor(name, email) {
this.name = name;
this.email = email;
this.#privateField = 'secret';
}
// Getter
get displayName() {
return this.name.toUpperCase();
}
// Setter
set displayName(value) {
this.name = value.trim();
}
// Method
greet() {
return `Hello, I'm ${this.name}`;
}
// Static method
static create(data) {
return new User(data.name, data.email);
}
}
// Inheritance
class Admin extends User {
constructor(name, email, role) {
super(name, email);
this.role = role;
}
greet() {
return `${super.greet()} and I'm an ${this.role}`;
}
}
6. Modules
// Named exports
export const API_URL = 'https://api.example.com';
export function fetchData() { /* ... */ }
export class User { /* ... */ }
// Default export
export default function main() { /* ... */ }
// Importing
import main, { API_URL, fetchData, User } from './module.js';
// Dynamic import
const module = await import('./heavy-module.js');
7. Error Handling
// Custom error
class ValidationError extends Error {
constructor(message, field) {
super(message);
this.name = 'ValidationError';
this.field = field;
}
}
// Try-catch with specific handling
try {
await submitForm(data);
} catch (error) {
if (error instanceof ValidationError) {
showFieldError(error.field, error.message);
} else if (error instanceof NetworkError) {
showToast('Network error. Please try again.');
} else {
console.error('Unexpected error:', error);
showT
...
Repository
vapvarun/claude-backupParent repository
Repository Stats
Stars5
Forks0